您好我正在尝试将二叉树转移到列表中,但是在后续订单中将其交叉。
(define (postorden arbol)
(if (null? arbol)
('()) (append (append (postorden (car (cdr arbol)))
(postorden (car (cddr arbol))))
(list (car arbol)))))
但是我收到了这个错误:
cdr:合同违规 预期:对? 给定:'null
但是例如这个树:'((1 2)((7 10)((2 4)null null))((6 8)((10 13)null null)null))
执行cdr并得到:(((7 10)((2 4)null null))((6 8)((10 13)null null)null)) 然后我把车开到这个结果:'((7 10)((2 4)null null))如果它是一对。所以我不明白出了什么问题。
提前谢谢。
答案 0 :(得分:1)
if
表达式具有for (if e0 e1 e2)
,其中e0,e1和e2是表达式。
在您的计划中,您有:
(if e0
('() ...)
e2)
这意味着如果e0为真,则评估('() ...)
。
此处'()
是空列表,也称为null
。
表达式('() ...)
将尝试使用'()
的结果调用...
,
因此给出错误。
修正此错误,希望您的其他错误消失 - 如果没有告诉我们您的情况并再次提问。