35 lines
1022 B
Racket
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) '() '()))))
|