This commit is contained in:
joachimschmidt557 2019-09-13 19:06:46 +02:00
parent 9dca563e41
commit fade1fc218

25
bst.rkt
View file

@ -20,13 +20,12 @@
[(empty? lst) empty] [(empty? lst) empty]
[else (insert (bst-from-list (rest lst)) (first lst))])) [else (insert (bst-from-list (rest lst)) (first lst))]))
(define (rotate-left node) (define (rotate-right node)
(if (empty? node) empty (if (empty? node) empty
(let ([x node] [l (node-left node)] [r (node-right node)]) (let ([x node] [l (node-left node)] [r (node-right node)])
(let ([a (if (empty? l) empty (node-left l))] (let ([a (if (empty? l) empty (node-left l))]
[b (if (empty? l) empty (node-right l))] [b (if (empty? l) empty (node-right l))]
[c (if (empty? r) empty (node-left r))] [c (if (empty? r) empty (node-left r))])
[d (if (empty? r) empty (node-right r))])
(make-node (node-value l) a (make-node (node-value x) b r)))))) (make-node (node-value l) a (make-node (node-value x) b r))))))
(define (height node) (define (height node)
@ -37,10 +36,22 @@
(define (avlcheck node) (define (avlcheck node)
(cond (cond
[(empty? node) 0] [(empty? node) 0]
[(= (height (node-left node)) -1) -1] [(= (avlcheck (node-left node)) -1) -1]
[(= (height (node-right node)) -1) -1] [(= (avlcheck (node-right node)) -1) -1]
[(< 1 (abs (- (height (node-left node)) (height (node-right node))))) -1] [(< 1 (abs (- (avlcheck (node-left node)) (avlcheck (node-right node))))) -1]
[else (+ 1 (max (height (node-left node)) (height (node-right node))))])) [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) (define (delete node)
(cond (cond