format bst

This commit is contained in:
joachimschmidt557 2019-09-08 19:18:29 +02:00
parent 7391f2ffeb
commit a0420c2879

78
bst.rkt
View file

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