1 (define (entry tree) (car tree))
2 (define (left-branch tree) (cadr tree))
3 (define (right-branch tree) (caddr tree))
4 (define (make-tree entry left right)
5 (list entry left right))
7 (define (element-of-set? x set)
11 (element-of-set? x (left-branch set)))
13 (element-of-set? x (right-branch set)))))
15 (define (adjoin-set x set)
16 (cond ((null? set) (make-tree x '() '()))
17 ((= x (entry set)) set)
19 (make-tree (entry set)
20 (adjoin-set x (left-branch set))
23 (make-tree (entry set)
25 (adjoin-set x (right-branch set))))))
27 ;; Exercise 2.66. Implement the lookup procedure for the case where the set of records is structured as a binary tree, ordered by the numerical values of the keys.
29 (define (lookup given-key set-of-records)
30 (if (null? set-of-records)
32 (let ((record (entry set-of-records))
33 (record-key (key record)))
34 (cond ((= given-key record-key)
36 ((< given-key record-key)
37 (lookup given-key (left-branch set-of-records)))
38 ((> given-key record-key)
39 (lookup given-key (right-branch set-of-records)))))))