xanadu - btree
This commit is contained in:
parent
c85b80f333
commit
e69708fefd
|
@ -30,9 +30,16 @@
|
|||
(let ((numitems 0)
|
||||
(numnodes 0)
|
||||
(root 'foo)
|
||||
(data #f)
|
||||
(left l)
|
||||
(right r))
|
||||
|
||||
(define (get-data)
|
||||
data)
|
||||
|
||||
(define (set-data! value)
|
||||
(set! data value))
|
||||
|
||||
(define (get-left)
|
||||
left)
|
||||
|
||||
|
@ -58,6 +65,10 @@
|
|||
get-numnodes)
|
||||
((eq? msg 'get-left)
|
||||
get-left)
|
||||
((eq? msg 'get-data)
|
||||
get-data)
|
||||
((eq? msg 'set-data!)
|
||||
set-data!)
|
||||
((eq? msg 'get-right)
|
||||
get-right)
|
||||
(else (display "b-tree-node : message not understood")))))
|
||||
|
@ -103,10 +114,11 @@
|
|||
((= j len) (display "node not added.") 0)
|
||||
(add-rec str (vector-ref j tree)))
|
||||
)))
|
||||
((and (string<? str (vector-ref tree i))
|
||||
(string>? str (vector-ref tree (+ i 1))))
|
||||
((and (string<? str (((vector-ref tree i) 'get-data)))
|
||||
(string>? str (((vector-ref tree (+ i 1)) 'get-data))))
|
||||
(let ((lr (vector-median tree)))
|
||||
(let ((new-node (make-b-tree-node (car lr) (cadr lr))))
|
||||
((new-node 'set-data!) str)
|
||||
(vector-set! tree i new-node)
|
||||
)))
|
||||
((string=? str (vector-ref tree i))
|
||||
|
|
Loading…
Reference in New Issue