[funds-cvs] r93 - trunk/funds/src/trees/heap
abaine at common-lisp.net
abaine at common-lisp.net
Thu Jul 12 01:05:43 UTC 2007
Author: abaine
Date: Wed Jul 11 21:05:43 2007
New Revision: 93
Modified:
trunk/funds/src/trees/heap/heap-insert.lisp
Log:
Factored out attach-heap method.
Modified: trunk/funds/src/trees/heap/heap-insert.lisp
==============================================================================
--- trunk/funds/src/trees/heap/heap-insert.lisp (original)
+++ trunk/funds/src/trees/heap/heap-insert.lisp Wed Jul 11 21:05:43 2007
@@ -31,19 +31,14 @@
:order order))
(h2 (tree-child heap :side other-side)))
(if (funcall order (bt-key h1) (bt-key heap)) ; if we need to bubble up
- (make-heap :priority (heap-priority h1)
- :value (bt-value h1)
- side (make-heap :priority (heap-priority heap)
-
- :value (bt-value heap)
+ (attach-heap h1
+ side (attach-heap heap
:left (bt-left h1)
:right (bt-right h1))
- other-side h2)
- (make-heap :priority (heap-priority heap)
- :value (bt-value heap)
- side h1
- other-side h2))))
-
+ other-side h2)
+ (attach-heap heap
+ side h1
+ other-side h2))))
(defun next-direction (heap)
(path-direction (1+ (heap-weight heap))))
@@ -56,3 +51,9 @@
(if (< (- n (expt 2 lg)) (expt 2 (1- lg)))
:left
:right)))
+
+(defun attach-heap (root &key left right)
+ (make-heap :priority (heap-priority root)
+ :value (bt-value heap)
+ :left left
+ :right right))
More information about the Funds-cvs
mailing list