2014-11-22 16 views
1

안녕하세요. 이진 트리를 목록으로 이전하려고했지만 안녕하세요.이진 트리를 포스트 순서로 라켓에 나열하십시오.

(define (postorden arbol) 
    (if (null? arbol) 
    ('()) (append (append (postorden (car (cdr arbol))) 
          (postorden (car (cddr arbol)))) 
        (list (car arbol))))) 

그러나 나는이 오류를 얻을 :

CDR : 예상 계약 위반 : 쌍? given : 'null

예를 들어 다음과 같이'((1 2) ((7) 10) ((2 4) null null) ((8) ((10 13) null null))))

cdr을 수행하여 다음을 얻습니다. (((7 4) null null) ((8) ((10 13) null null)) 그리고 나서 차를 만듭니다. 이 결과 : '((7 10) ((2 4) null null))이 쌍인 경우. 그래서 나는 무엇이 잘못되었는지 이해하지 못합니다.

미리 감사드립니다.

답변

1

if 표현식은 (if e0 e1 e2)에 해당합니다. 여기서 e0, ​​e1 및 e2는 표현식입니다. 프로그램에서 당신은이 :

(if e0 
    ('() ...) 
    e2) 

이 E0에 해당하는 경우, 다음 ('() ...) 평가되는 것을 의미한다.

여기서 '()null이라고도하는 빈 목록입니다.

표현 ('() ...)..., 의 결과 '()를 호출하여 오류를 제공하려고합니다.

이 오류를 수정하고 다른 오류가 사라지면 - 귀하의 의견을 표시하지 말고 다시 묻기 만하면됩니다.