给定一个以嵌套列表形式表示的树,我如何优先遍历它?
Given a tree represented in the form of nested lists, how do I traverse it breadth first?
假设我有一个在嵌套列表表示中给出的树,我如何优先遍历它?例如,如果我得到
[1, [2, [3, [4, [3, 5]]]], [3, [4, 5, 2]]]
输出将是
[1,2,3,3,4,4,5,2,3,5]
另外,给定深度优先顺序的扁平表示,如 [1,2,3,4,3,5,3,4,5,2]
,我如何找到宽度优先顺序的索引?
在此先感谢您的帮助。
这是 Python 中的代码:
queue = [1, [2, [3, [4, [3, 5]]]], [3, [4, 5, 2]]]
while queue:
firstItem = queue.pop(0)
if type(firstItem) is list:
for item in firstItem:
queue.append(item)
else:
print('Traversed %d' % (firstItem))
输出为:
Traversed 1
Traversed 2
Traversed 3
Traversed 3
Traversed 4
Traversed 5
Traversed 2
Traversed 4
Traversed 3
Traversed 5
在研究了我的输出以及你指定的输出应该在你的问题中之后,我认为我的输出更正确。更具体地说,输入列表中最左边的 3
和输入列表末尾的 [4, 5, 2]
在同一个 "level" 上,因此应该遍历 3, 4, 5, 2
,如从我的输出的第 4 行到第 7 行显示。
关于你的第二个问题,我认为你应该单独提出一个问题,因为它确实是一个完全不同的问题。
假设我有一个在嵌套列表表示中给出的树,我如何优先遍历它?例如,如果我得到
[1, [2, [3, [4, [3, 5]]]], [3, [4, 5, 2]]]
输出将是
[1,2,3,3,4,4,5,2,3,5]
另外,给定深度优先顺序的扁平表示,如 [1,2,3,4,3,5,3,4,5,2]
,我如何找到宽度优先顺序的索引?
在此先感谢您的帮助。
这是 Python 中的代码:
queue = [1, [2, [3, [4, [3, 5]]]], [3, [4, 5, 2]]]
while queue:
firstItem = queue.pop(0)
if type(firstItem) is list:
for item in firstItem:
queue.append(item)
else:
print('Traversed %d' % (firstItem))
输出为:
Traversed 1
Traversed 2
Traversed 3
Traversed 3
Traversed 4
Traversed 5
Traversed 2
Traversed 4
Traversed 3
Traversed 5
在研究了我的输出以及你指定的输出应该在你的问题中之后,我认为我的输出更正确。更具体地说,输入列表中最左边的 3
和输入列表末尾的 [4, 5, 2]
在同一个 "level" 上,因此应该遍历 3, 4, 5, 2
,如从我的输出的第 4 行到第 7 行显示。
关于你的第二个问题,我认为你应该单独提出一个问题,因为它确实是一个完全不同的问题。