[英]Binary Search Tree To List Scheme
我在理解如何使用BST並將其轉換為列表而不使用附加或任何高級技術時遇到麻煩。 例如,為您提供了一個BST,每個節點都有一個數字和一個名稱(按從最小到最大的字符串排序),並且您想要按順序輸出該BST中值為3或類似值的項目的列表。這些線。
我知道可以遞歸地完成此操作,但我認為了解此問題的最大問題與左右節點的拆分有關,因為您在這兩個節點上都使用了遞歸,但是您必須以某種方式將它們放到最后清單。
感謝您對理解此問題的任何幫助,在此先感謝您。
因此,假設您有一棵具有值(1 2 3 4)
的二叉樹。 你知道你不能cons
1
unles你已經有(2 3 4)
等,所以實際上你需要積累他們相反。
在二叉搜索樹中,順序遍歷是左側,此值,右側將使用cons
列出,將在右側,此節點,左側。
(define (tree->list tree)
(let rec ((tree tree) (lst '()))
(if (tree-null? tree)
lst
(rec (tree-left tree)
(cons (tree-value tree)
(rec (tree-right tree) lst))))))
它可能看起來不像首先執行右側操作,但請記住,過程必須先評估其參數,然后才能應用。
沒有提到如何為樹實現數據結構,因此我只做了一些程序。 最終結果真的無關緊要。
這個問題的簡短答案是:您是對的,您需要append
。 好消息是,(如果您要執行分配任務),則可以輕松實現自己的append
。 如果您不是在分配作業中執行此操作,請直接使用append
!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.