0
当前正试图围绕着Scheme中二叉树的数据抽象。我正在关注SICP课程,并查看二叉树的实现,但我不确定如何使用它。使用元素集?
;; Abstraction barrier
(define (make-tree entry left right)
(list entry left right))
(define (entry tree)
(car tree))
(define (left-branch tree)
(cadr tree))
(define (right-branch tree)
(caddr tree))
这本书提出了元素的设置?过程:
(define (element-of-set? x set)
(cond ((null? set) #f)
((= x (entry set)) #t)
((< x (entry set))
(element-of-set? x (left-branch set)))
((> x (entry set))
(element-of-set? x (right-branch set)))))
假设我有一个树节点5,左支1,右分支9,我要着手做的树:
(define my-tree (make-tree 5 1 9))
之后,我要检查如果1是集合的成员(我的树):
(element-of-set? 1 my-tree)
这样做产生以下错误:
mcar: contract violation
expected: mpair?
given: 1
检查1是否为成员的正确语法是什么?
在此先感谢。