【发布时间】:2019-11-07 03:31:52
【问题描述】:
当唯一的输入数据是叶节点的路径决策(以随机顺序)时,我正在寻找一种算法来构建可能的自上而下的树结构。
如果叶节点已通过该节点,则路径决策用 [nodeID]+ 标记,如果叶节点未通过该节点,则使用 [nodeID]- 标记。示例输入:
上述示例输入中的一种可能的树结构是:
输出应该是节点列表和节点各自的父节点,如下所示:
正如您所见,每个叶节点的可能位置不限于一个,因为输入数据不是完整的路径。示例中的 Leaf1 可以是节点 D 或节点 I 的子节点。
您可以从任意数量的叶子获取路径数据,但每个叶子只有一行路径数据。可能有一些叶子你根本没有得到任何数据,而且你不知道树中有多少叶子。路径数据中提到的所有节点都应该出现在输出表中,并且只有计算出的根不应该分配任何父节点。
我想必须以某种方式结合每个叶路径的事实,例如从 Leaf1 你知道:A 和 E 不能在平行线上,从 Leaf2 你知道 A 和 I 不能在平行线,所以上...
首选javascript,但也欢迎使用其他语言或伪代码!
【问题讨论】:
-
每个叶子最多有一个输入行,还是可以有多个输入行对应同一个叶子?
-
@tucuxi 是的,每片叶子最多一行。
-
在您的示例中,您没有显示任何叶节点,并且至少需要有 5 个。但是您有 4 的数据。您的数据应该是针对某些叶节点还是全部?
-
@btilly 可以使用来自 4 个叶节点的分段路径信息构建许多不同的可能树。我只展示了一种可能的“解决方案”。叶子应该位于末端节点下方,在这个例子中只有 4 个,而不是 5 个。我需要一个算法来构建一个所有叶子路径都有效的树结构。在示例中只有 4 条路径。输入表和导出表是唯一重要的东西(树只用于可视化。)
-
有多于 4 个叶子,但只有来自 4 个叶子的路径数据。
标签: javascript algorithm tree