繁体   English   中英

要在球拍中以后顺序列出的二叉树

[英]Binary tree to list in post-order in racket

嗨,我正在尝试将一棵二叉树转移到一个列表中,但以后置顺序穿过它。

(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 6)((10 10)null null)null))

执行了cdr并得到了:((((7 10)((2 4)null null))((6 8)((10 13)null nul)null))然后我把车开到了这个结果:'(( 7 10)(((2 4)null null))如果是一对。 所以我不明白什么是错的。

先感谢您。

一个if表达式具有for (if e0 e1 e2) ,其中e0,e1,和,e2是表达式。 在您的程序中,您具有:

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

这意味着如果e0为true,则将评估('() ...)

这里'()是空列表,也称为null

表达式('() ...)将尝试呼叫'()与的结果... ,从而给出错误。

修正此错误,希望您的其他错误消失了-如果没有告诉我们您的问题并再次询问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM