在python中,我有一个表示二叉树的嵌套列表的列表:
L = [0, [[1, [2, 3]], [4, [5, 6]]]]
因此,该树可以如下所示:
0
/ \
1 4
/\ /\
2 3 5 6
我现在想实现一个函数,该函数将树的级别作为输入并返回该级别的所有节点:
GetNodes(0) = 0
GetNodes(1) = [1,4]
GetNodes(2) = [2,3,5,6]
有没有一种简便的方法可以避免对
L
的所有嵌套列表进行残酷搜索?是否有可能在python中对二进制树进行更标准的管理,也许将我的列表列表转换为其他内容?
最佳答案
我会去一个BFS。将尽快发布代码:)
编辑:这里你去
L = [0, [[1, [2, 3]], [4, [5, 6]]]]
def getLevel(k, tree):
currentLevel = [tree[0]]
nextLevel = tree[1]
level = 1
while level <= k:
_currentLevel = []
_nextLevel = []
for subtree in nextLevel:
if isinstance(subtree, list):
_currentLevel.append(subtree[0])
if isinstance(subtree[1], list):
_nextLevel.append(subtree[1])
else:
_currentLevel.append(subtree[1])
else:
_currentLevel.append(subtree)
currentLevel= _currentLevel
nextLevel = _nextLevel
level+=1
return currentLevel
print getLevel(0, L)
print getLevel(1, L)
print getLevel(2, L)