打印二进制搜索树的级别

时间:2014-03-19 13:51:40

标签: python python-3.x binary-search-tree

我有一个二叉搜索树数据结构类,它保存节点,这些节点就像类似二叉搜索树的类一样。

这个课程太长了,无法发布,但基本上这就是它的工作原理。 如果我想打印bst的最高值,我会说

print (self._root)

如果我想移动到树的左侧(与右侧相同,只是向右而不是向左),我会说

print (self._root._left)

我希望这足以让你解决我的问题

所以对我的问题,如果我有一个像:

      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]

如何让它以我想要的方式打印?

1 个答案:

答案 0 :(得分:0)

最理想的是,你想要递归地回答这个问题。这种类型的遍历特别称为广度优先。 Here是关于遍历二叉搜索树的一些注释,虽然它们在java中,但它们可能对您有用。

Here也是一个非常相似(可能是重复的)问题,但与递归求解相反,使用循环给出了一个解决方案。