[funds-cvs] r116 - trunk/funds/src/trees

abaine at common-lisp.net abaine at common-lisp.net
Sat Aug 4 14:14:03 UTC 2007


Author: abaine
Date: Sat Aug  4 10:14:03 2007
New Revision: 116

Modified:
   trunk/funds/src/trees/tree-insert.lisp
Log:
Changed tree-insert specializer
to no longer be a specializer.  So leaves are now a special case, and tree insertion 
proceeds the same for binary trees and avl trees.  The difference is that anytime during
insertion or removal that a tree is 'stitched' together, stitch-tree balances an avl tree
but not a binary tree; also I moved stitch-tree functions to the stitch-tree file.

Modified: trunk/funds/src/trees/tree-insert.lisp
==============================================================================
--- trunk/funds/src/trees/tree-insert.lisp	(original)
+++ trunk/funds/src/trees/tree-insert.lisp	Sat Aug  4 10:14:03 2007
@@ -27,16 +27,14 @@
 
 (defmethod tree-insert ((tree bt-leaf) key value &key test order)
   (declare (ignore test order))
-  (make-instance 'binary-tree
-		 :key key
-		 :value value))
+  (stitch-binary-tree :key key :value value))
 
 (defmethod tree-insert ((tree avl-leaf) key value &key test order)
   (declare (ignore test order))
-  (stitch-avl-tree :key key
-		   :value value))
+  (stitch-avl-tree :key key :value value))
 
-(defmethod tree-insert ((tree binary-tree) key value &key (test #'eql) (order #'<))
+
+(defmethod tree-insert (tree key value &key (test #'eql) (order #'<))
   (if (funcall test key (bt-key tree)) 
       (stitch-tree tree :key key :value value :left (bt-left tree) :right (bt-right tree))
       (let* ((side (side-to-insert tree key :order order))
@@ -46,15 +44,3 @@
 				     :test test
 				     :order order)
 		     other-side (tree-child tree :side other-side)))))
-
-(defmethod stitch-tree ((tree binary-tree) 
-			&key (key (bt-key tree)) (value (bt-value tree)) left right)
-  (make-instance 'binary-tree
-		 :key key
-		 :value value
-		 :left left
-		 :right right))
-
-(defmethod stitch-tree ((tree avl-tree) 
-			&key (key (bt-key tree)) (value (bt-value tree)) left right)
-  (balance key value left right))



More information about the Funds-cvs mailing list