sicp/2_66.rkt

35 lines
1022 B
Racket

#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) '() '()))))