Back to lecture notes -- Keyboard shortcut: 'u'                      Lecture 3 - slide 40 : 43
 

; BINARY TREE STUFF

; Tree constructors:
(define (make-tree left-tree root-node right-tree)
   (list left-tree root-node right-tree))
(define (leaf root-node) (make-tree '() root-node '()))

; Tree accessors:
(define root cadr)
(define left-tree car)
(define right-tree caddr)

; Tree predicates:
(define inner-node? pair?)
(define leaf? number?)
(define empty-tree? null?)

; Two concrete trees - identical to the ones shown on the previous slide:
(define tr1 (make-tree (make-tree (leaf 2) 4 (leaf 3))
                       7
                       (make-tree
                            (make-tree '() 0 (leaf 9))
                            1
                            (leaf 5))))

(define tr2 (make-tree (make-tree
                            (make-tree '() 1 (leaf 9))
                            0
                            (leaf 7))
                       8
                       (make-tree
                            (make-tree (leaf 2) 7 '())
                            6
                            (leaf 1))))