#lang sicp (define (entry tree) (car tree)) (define (left-branch tree) (cadr tree)) (define (right-branch tree) (caddr tree)) (define (make-tree entry left right) (list entry left right)) (define (element-of-set? x set) (cond ((null? set) false) ((= x (entry set)) true) ((< x (entry set)) (element-of-set? x (left-branch set))) ((> x (entry set)) (element-of-set? x (right-branch set))))) (define key car) (define (lookup given-key set-of-records) (cond ((null? set-of-records) false) ((= given-key (key (entry set-of-records))) (entry set-of-records)) ((< given-key (key (entry set-of-records))) (lookup given-key (left-branch set-of-records))) (else (lookup given-key (right-branch set-of-records))))) (define records (make-tree '(3 three) (make-tree '(1 one) '() '()) (make-tree '(5 five) (make-tree '(4 four) '() '()) (make-tree '(7 seven) '() '()))))