簡體   English   中英

二進制搜索樹的打印級別

[英]Printing levels of Binary Search Tree

我有一個二進制搜索樹數據結構類,該類在像二進制搜索樹一樣的類中保存了作為對象的節點。

該課程太長了,無法在此處發布,但是基本上這是它的工作方式。 如果我想打印bst的最大值,我會說

print (self._root)

如果我想移至樹的左側(與移至右側相同,只是向右而不是向左),我會說

print (self._root._left)

我希望這足夠了,以便您可以解決我的問題

所以關於我的問題,如果我有一個bst:

      6
     / \
    3   8
   / \   \
  1  4   10

我希望能夠打印出:

6

3
8

1
4
10

我寫了一個遞歸遍歷函數:

def traverse(self):

        a = []
        self._traverse_aux(self._root, a)   
        return a

def _traverse_aux(self, node, a):

        if node is not None:
            self._traverse_aux(node._left, a)
            a.append(node._value)
            self._traverse_aux(node._right, a)
        return

但是,這會將值打印在單個數組中:

[1, 3, 4, 6, 8, 10]

我怎樣才能以上面想要的方式打印它?

理想情況下,您將要遞歸地回答這個問題。 這種遍歷尤其稱為廣度優先。 是遍歷二進制搜索樹的一些說明,盡管它們在Java中,但它們可能對您有用。

也是一個非常相似(可能重復)的問題,盡管與遞歸解決該問題相反,使用循環給出了一個解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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