Python 二叉搜索树的打印级别

Python 二叉搜索树的打印级别,python,python-3.x,binary-search-tree,Python,Python 3.x,Binary Search Tree,我有一个二元搜索树数据结构类,它包含节点,节点是类中的对象,类似于二元搜索树 这个类太长,无法在这里发布,但基本上就是这样工作的。 如果我想打印bst的最高值,我会说 print (self._root) 如果我想移动到树的左侧(与向右移动相同,只需向右移动而不是向左),我会说 print (self._root._left) 我希望这足够了,这样你可以帮我解决我的问题 关于我的问题,如果我有一个bst,比如: 6 / \ 3 8 / \ \

我有一个二元搜索树数据结构类,它包含节点,节点是类中的对象,类似于二元搜索树

这个类太长,无法在这里发布,但基本上就是这样工作的。 如果我想打印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编写的

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

的可能重复