【问题标题】:Binary tree to list in post-order in racket在球拍中按后序列出的二叉树
【发布时间】:2015-01-20 19:24:13
【问题描述】:

您好,我正在尝试将二叉树转移到列表中,但在后序中交叉。

(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 nul) null)) 然后我把车做成这样的结果:'((7 10) ((2 4) null null)) 如果它是一对的话。所以我不明白出了什么问题。

提前谢谢你。

【问题讨论】:

    标签: functional-programming scheme binary-tree racket postorder


    【解决方案1】:

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

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

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

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

    表达式('() ...) 将尝试调用'(),结果为..., 从而报错。

    修复此错误,希望您的其他错误消失 - 如果不向我们展示您的问题并再次询问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 1970-01-01
      相关资源
      最近更新 更多