【发布时间】:2017-12-19 07:26:03
【问题描述】:
我有一棵 Python 对象树。树是本质上定义的:每个对象都有一个子列表(可能为空)。 我希望能够打印从根到每个叶子的所有路径的列表。
在上面的树的情况下,这意味着:
result = [
[Node_0001,Node_0002,Node_0004],
[Node_0001,Node_0002,Node_0005,Node_0007],
[Node_0001,Node_0003,Node_0006],
]
节点必须被视为对象而不是整数(仅显示其整数 ID)。 我不关心结果中分支的顺序。每个节点都有任意数量的子节点,递归的级别也不固定。
我正在尝试递归方法:
def get_all_paths(node):
if len(node.children)==0:
return [[node]]
else:
return [[node] + get_all_paths(child) for child in node.children]
但我最终得到了嵌套列表,这不是我想要的:
[[Node_0001,
[Node_0002, [Node_0004]],
[Node_0002, [Node_0005, [Node_0007]]]],
[Node_0001, [Node_0003, [Node_0006]]]]
欢迎任何帮助,这个问题让我发疯:p
谢谢
【问题讨论】:
-
考虑使用中序遍历。左-右-右