From fade1fc2188712c42f3bb33ccdcd0d0243e8841b Mon Sep 17 00:00:00 2001 From: joachimschmidt557 Date: Fri, 13 Sep 2019 19:06:46 +0200 Subject: [PATCH] WIP bst --- bst.rkt | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/bst.rkt b/bst.rkt index b349c8c..1fa4ce0 100644 --- a/bst.rkt +++ b/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