WIP bst
This commit is contained in:
parent
9dca563e41
commit
fade1fc218
1 changed files with 18 additions and 7 deletions
25
bst.rkt
25
bst.rkt
|
|
@ -20,13 +20,12 @@
|
|||
[(empty? lst) empty]
|
||||
[else (insert (bst-from-list (rest lst)) (first lst))]))
|
||||
|
||||
(define (rotate-left node)
|
||||
(define (rotate-right node)
|
||||
(if (empty? node) empty
|
||||
(let ([x node] [l (node-left node)] [r (node-right node)])
|
||||
(let ([a (if (empty? l) empty (node-left l))]
|
||||
[b (if (empty? l) empty (node-right l))]
|
||||
[c (if (empty? r) empty (node-left r))]
|
||||
[d (if (empty? r) empty (node-right r))])
|
||||
[c (if (empty? r) empty (node-left r))])
|
||||
(make-node (node-value l) a (make-node (node-value x) b r))))))
|
||||
|
||||
(define (height node)
|
||||
|
|
@ -37,10 +36,22 @@
|
|||
(define (avlcheck node)
|
||||
(cond
|
||||
[(empty? node) 0]
|
||||
[(= (height (node-left node)) -1) -1]
|
||||
[(= (height (node-right node)) -1) -1]
|
||||
[(< 1 (abs (- (height (node-left node)) (height (node-right node))))) -1]
|
||||
[else (+ 1 (max (height (node-left node)) (height (node-right node))))]))
|
||||
[(= (avlcheck (node-left node)) -1) -1]
|
||||
[(= (avlcheck (node-right node)) -1) -1]
|
||||
[(< 1 (abs (- (avlcheck (node-left node)) (avlcheck (node-right node))))) -1]
|
||||
[else (+ 1 (max (avlcheck (node-left node)) (avlcheck (node-right node))))]))
|
||||
|
||||
(define (min-subtree node)
|
||||
(cond
|
||||
[(empty? node) empty]
|
||||
[(empty? (node-left node)) node]
|
||||
[else (min-subtree (node-left node))]))
|
||||
|
||||
(define (max-subtree node)
|
||||
(cond
|
||||
[(empty? node) empty]
|
||||
[(empty? (node-right node)) node]
|
||||
[else (max-subtree (node-right node))]))
|
||||
|
||||
(define (delete node)
|
||||
(cond
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue