簡體   English   中英

二進制搜索樹到列表方案

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM