특정 깊이의 이진 트리를 입력하는 스키마 프로그램을 작성하려고합니다. 예를 들어, 이진 트리의 루트는 1이고 왼쪽 하위 트리의 루트는 2이며 계속 켜져 있습니다. 트리에 깊이가있는 데이터 표현식을 출력하도록해야합니다. 지금은 아래의 코드를 가지고,하지만 난 계속 오류 메시지가 무엇입니까 : 당신은 내가 배우고로 좋은 것 내가 사용하고있는 코드에서 같은 용어를 사용하여이 문제를 설명 할 수있는 경우스키마 이진 트리를 조작하는 방법
Error in null?: expected a list; got '1'.
을 내가 할 더 큰 표현을 사용하는 법을 모른다.
이
은(define fetch-exp
(λ (n bt)
(cond [(empty-tree? bt) ▽#f]
[(> n (tree-depth (left-tree bt))) ▽#f]
[(> n (tree-depth (right-tree bt))) ▽#f]
[(one? n) (root bt)]
[(> (tree-depth (left-tree bt)) (tree-depth (right-tree bt)))
(fetch-exp (left-tree bt) (sub1 n))]
[(> (tree-depth (right-tree bt)) (tree-depth (left-tree bt)))
(fetch-exp (right-tree bt) (sub1 n))]
[else ▽#f])))
대단히 감사합니다 "또는"을 사용하지 않고 동일한 함수를 만드는 방법이 있습니다 – Jim
예, 대체 절을 두 절로 바꾸십시오 ((fetch-exp (sub1 n) (왼쪽 트리 bt))) (else (fetch- exp (sub1 n) (right-tree bt))) 한 절의 cond 절은 합법적이며, 절이 거짓이지만 아무 것도 아닌 경우 그 값을 반환하지만,이 또한 약간 추합니다. – WorBlux