这是一个计划程序,当一个人的名字和树作为输入时,查找二叉树的后代(树只有父亲和两个儿子 - bst)。我认为这里的主要问题是 getons 函数。我应该用什么替换这个功能?
(define (getfather FAMT)`
(car FAMT)
)
(define (getson1 FAMT)
(cadr FAMT)
)
(define (getson2 FAMT)
(caddr FAMT)
)
(define (getsons FAMT)
(cdr FAMT)
)
(define (empty? FAMT)
(null? FAMT)
)
(define (nosons? FAMT)
(and (empty? (getson1 FAMT)) (empty? (getson2 FAMT)))
)
(define (getd FAMT)
(cond ((empty? FAMT) '())
((nosons? FAMT) '())
((empty? (getson1 FAMT)) (getson2 FAMT))
((empty? (getson2 FAMT)) (getson1 FAMT))
(else (getd (getsons FAMT))))
)
(define (main1 person FAMT)
(cond ((empty? FAMT) (getd '()))
((equal? person (getfather FAMT)) (getd FAMT))
(else ( main1 person (getsons FAMT))))
)
(define FAMT '(Pierce (Mark (Peter () ()) (Blaise () ())) (James () () )))
</code>