簡體   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