Author: abaine Date: Wed Jul 4 13:39:42 2007 New Revision: 49
Modified: trunk/funds/src/trees/avl-tree.lisp Log: avl-remove method added.
Modified: trunk/funds/src/trees/avl-tree.lisp ============================================================================== --- trunk/funds/src/trees/avl-tree.lisp (original) +++ trunk/funds/src/trees/avl-tree.lisp Wed Jul 4 13:39:42 2007 @@ -33,6 +33,14 @@ (t (side-insert tree key value test order :side (if (funcall order key (avl-key tree)) :left :right)))))
+(defun avl-remove (tree key &key (test #'eql) (order #'<)) + "The AVL Tree that results when the given key and its associated value are +removed from the given tree." + (cond ((avl-empty-p tree) tree) + ((funcall test key (avl-key tree)) ()) + (t (side-remove tree key test order + :side (if (funcall order key (avl-key tree)) :left :right))))) + (defun avl-find-value (tree key &key (order #'<) (test #'eql)) "The value associated with the given key in the given AVL Tree. The function returns nil if the key is not found in the given tree; a second value is returned