Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang racket
- (struct Leaf (x))
- (struct Node (left right))
- (define (prod_tree t)
- (cond [(Leaf? t) (Leaf-x t)]
- [else (* (prod_tree (Node-left t))
- (prod_tree (Node-right t)))]
- )
- )
- (define (tree_height t)
- (cond [(Leaf? t) 0]
- [else (max(+ 1 (tree_height (Node-left t)))
- (+ 1 (tree_height (Node-right t))))]
- )
- )
- (define (height_balanced_util t)
- (cond [(Leaf? t) true]
- [(null? t) true]
- [else (
- and (<= (abs(- (tree_height (Node-left t)) (tree_height (Node-right t)))) 1)
- (and (height_balanced_util (Node-left t)) (height_balanced_util (Node-right t)))
- )
- ]
- )
- )
- (define (height_balanced t)
- (values (tree_height t) (height_balanced_util t))
- )
- (define t0 (Node (Node (Leaf 7) (Leaf 2)) (Leaf 5)))
- (prod_tree t0)
- (height_balanced t0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement