【发布时间】:2012-11-06 17:50:41
【问题描述】:
给定一个二叉搜索树,例如:
9
8
7
5
3
2
我想获取值在 a 和 b(含)之间的节点的有序列表。
我已经实现了一个递归辅助函数:
def _range(root, a, b):
node_list = []
if root.left:
node_list.append(_range(root.left, a, b))
if root.value >= a and root.value <= b:
node_list.append(root)
if root.right:
node_list.append(_range(root.right, a, b))
return node_list
这给了我:
[[[BTNode: 2], BTNode: 3], BTNode: 5, [BTNode: 7, [[BTNode: 8], BTNode: 9]]]
但是我需要:
[BTNode: 2, BTNode: 3, BTNode: 5, BTNode: 7, BTNode: 8, BTNode: 9]
有没有办法让列表变平?我意识到我正在做的是将一个列表附加到另一个列表,但我不确定如何在不破坏代码的情况下解决这个问题。
【问题讨论】:
-
您是否尝试使用
node_list.extend而不是node_list.append?另一种解决方案是将列表作为参数传递。 -
我花了一段时间才弄清楚你的树是从左到右而不是从上到下绘制的。那真是令人困惑……^^
标签: python recursion tree binary-search-tree inorder