【发布时间】:2010-01-11 15:51:04
【问题描述】:
我有一个像这样的不寻常的树数组:
[[0, 1], [1, 2], [2, 3], [2, 4], [2, 5], [5, 6],
[4, 6], [3, 6], [0, 7], [7, 6], [8, 9], [9, 6]]
数组的每个元素都是一对,这意味着第二个是第一个的跟随者,例如:
[0, 1] - 0 is followed by 1
[1, 2] - 1 is followed by 2
我正在尝试像这样提取数组:
0 1 2 3 6
0 1 2 4 6
0 1 2 5 6
0 7 6
8 9 6
我无法编写一个健壮的遍历来提取像这样的所有可能路径。如何用 Python 做到这一点?
【问题讨论】:
-
性能有多重要?树中有多少个元素?
-
在您的示例中,如果两个节点位于同一棵树中,则较高的节点位于列表中较低的节点之前。我们可以假设情况总是如此吗?
-
这是作业吗?如果是这样,请使用作业标签。
-
请注意,您示例中的“树”并不罕见。它根本不是树,而是一种称为多树的有向无环图 (DAG)(详情请查看维基百科)。
-
如果边是无向的,树会更有意义。否则,从根节点遍历它的想法是没有意义的,因为这里没有一个定义明确的根。你确定如果 A '跟随' B,B 也不会跟随 A 吗?