Python 二叉搜索树的打印级别
我有一个二元搜索树数据结构类,它包含节点,节点是类中的对象,类似于二元搜索树 这个类太长,无法在这里发布,但基本上就是这样工作的。 如果我想打印bst的最高值,我会说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 / \ \
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编写的 也是一个非常类似(可能重复)的问题,尽管与递归求解相反,使用循环给出了一个解决方案。的可能重复