2001-02-04  Paul Cameron <1paul@optushome.com.au>

	* avl.c:
	remove nonexistent from right: finally get it right thanks, to Paul
	Cameron <1paul@optushome.com.au>

2001-01-28  Samual M. Rushing  <rushing@nightmare.com>

	* avl.c: delete non-existent key, bug in 'move right' clause

1998-10-10  Samual M. Rushing  <rushing@nightmare.com>

	* AVLmodule.c: matching DECREF for key when a remove fails

1998-10-04  Samual M. Rushing  <rushing@gnome.nightmare.com>

	* avl.c: fixed operations on empty trees

1998-03-03  Samual M. Rushing  <rushing@nightmare.com>

	* avl.c: Fixed bogus rank adjustment when deleting a non-existent key

1997-02-21  Samual M. Rushing  <rushing@nightmare.com>

	* AVLmodule.c, avl.c: copyright notice

	* avl.c: get_span_by_two_keys(): handle no-match case on low_key

	* avl.c: one-off bug in get_span_by_two_keys [left side]

	* avl.h: reformatted the function prototypes

	* avl.h, avl.c, AVLmodule.c: at_least() and at_most() from David Ascher

	* AVLmodule.c, avl.c, avl.h: compare_arg works

1996-02-26  Samual M. Rushing  <rushing@nightmare.com>

	* AVLmodule.c, avl.c, avl.h:
	revamp with comparison function considered part of the object

1995-11-28  Samual M. Rushing  <rushing@nightmare.com>

	* AVLmodule.c: implemented node caching for inorder iteration.

	* AVLmodule.c: new method: span()

	* avl.h: new prototypes:
	  get_span_by_key()
	  get_span_by_two_keys()

	* avl.c: new functions:
	  get_index_by_key()
	  get_span_by_key()
	  get_span_by_two_keys()

Tue Nov 28 20:54:36 1995  Samual M Rushing  <rushing@squirl.nightmare.com>

	* AVLmodule.c: implemented node caching for inorder iteration.

	* AVLmodule.c: new method: span()

	* avl.h: new prototypes:
	  get_span_by_key()
	  get_span_by_two_keys()

	* avl.c: new functions:
	  get_index_by_key()
	  get_span_by_key()
	  get_span_by_two_keys()

Thu Nov 23 02:24:55 1995  Samual M Rushing  <rushing@squirl.nightmare.com>

	* AVLmodule.c: removed the from_list function

	* AVLmodule.c:
	avl_tree_concat(): return self_copy directly if bb is empty.

	* AVLmodule.c: added slice_as_list()
	added slice_as_tree()
	__getslice__ returns a new tree
	avl.newavl() accepts optional list or tree

Wed Nov 22 01:26:56 1995  Samual M Rushing  <rushing@squirl.nightmare.com>

	* AVLmodule.c: moved an INCREF in avl_tree_insert()
	new implementation of __repr__ that doesn't
	  create a list object. (uses get_successor)
	deleted the inorder_list() functions.

	* avl.c: free each node structure in free_avl_tree_helper()

Tue Nov 21 23:46:44 1995  Samual M Rushing  <rushing@squirl.nightmare.com>

	* avl.c: added get_successor()

	* avl.h: added get_predecessor and get_successor prototypes.

Thu Nov 16 22:47:20 1995  Samual M Rushing  <rushing@squirl.nightmare.com>

	* AVLmodule.c: documentation strings
	added has_key()

	* avl.h: signed/unsigned glitches caught by the MS C compiler.

	* AVLmodule.c: added 'from_list'
	various glitches caught by the MS compiler

	* avl.c: signed/unsigned mismatch patch

	* avl.h: 'publish' new_avl_node() prototype

Wed Nov 15 20:53:37 1995  Samual M Rushing  <rushing@squirl.nightmare.com>

	* avl.c: free root->right only when necessary

	* AVLmodule.c, avl.h, avl.c: Initial revision

