Advertisement
Guest User

racket lab 1 final

a guest
Oct 25th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 0.91 KB | None | 0 0
  1. #lang racket
  2.  
  3. (struct Leaf (x))
  4. (struct Node (left right))
  5.  
  6.  
  7. (define (prod_tree t)
  8.   (cond [(Leaf? t) (Leaf-x t)]
  9.         [else (* (prod_tree (Node-left t))
  10.                  (prod_tree (Node-right t)))]
  11.    )
  12. )
  13.  
  14.  
  15. (define (tree_height t)
  16.     (cond [(Leaf? t) 0]
  17.           [else (max(+ 1 (tree_height (Node-left t)))
  18.                     (+ 1 (tree_height (Node-right t))))]
  19.  
  20.      )
  21. )
  22.  
  23.  
  24. (define (height_balanced_util t)
  25.   (cond [(Leaf? t) true]
  26.         [(null? t) true]
  27.         [else (
  28.               and (<= (abs(- (tree_height (Node-left t)) (tree_height (Node-right t)))) 1)
  29.                    (and (height_balanced_util (Node-left t)) (height_balanced_util (Node-right t)))
  30.                )
  31.          ]
  32.    )
  33. )
  34.  
  35.  
  36. (define (height_balanced t)
  37.   (values (tree_height t) (height_balanced_util t))  
  38. )
  39.  
  40.  
  41. (define t0 (Node (Node (Leaf 7) (Leaf 2)) (Leaf 5)))
  42. (prod_tree t0)
  43. (height_balanced t0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement