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是否爲成員的正確語法是什麼?
在此先感謝。