이것은 이진 가계도의 자손을 찾는 체계 프로그램입니다 (사람의 아버지와 두 명의 아들 - bst가 있습니다). 사람의 이름과 나무 입력으로 주어집니다. 나는 여기서 주요 문제가 getsons 함수라고 생각한다. 이 기능을 어떻게 바꿔야합니까? 이진 가계도의 자손을 찾으려면
(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>
질문을 _how_가 반환 될 예정 후손 지정하지 않습니다. 하위 트리로? 이름의 목록으로? 내 대답에서 나는 후자를 추측했다. 그렇지 않다면, 당신은 단지'append' 대신에 당신이 필요로하는 것을 사용하여 답을 조합하는 방법을 바꾸어야 만한다. –
자손은 이름의 목록으로 반환되어야한다. 도움을 많이 주셔서 감사합니다. – brookeblake