树遍历 - 在两片叶子之间找到

时间:2013-09-23 19:06:24

标签: php algorithm tree tree-traversal

我有一个网络节点映射,我需要在两点之间建立一个节点列表。一开始对我来说听起来很简单,但答案是让我不知所措:(

给出(简化)数据结构:

Id    Name        LeftId  RightId
1     Skagway     3
2     Klukwan     3
3     Haines      2       4
4     Juneau      3       5
5     Petersburg  4       6
6     Wrangell    5       7
7     Kasaan      6       4
8     Portage     4       6

如何构建算法(或者您可以建议算法)来构建遍历节点并构建两点之间所有节点的列表?这棵树大多是线性的,除了少数几个没有的地方。

他们希望能够从分支叶端开始识别节点。

1 个答案:

答案 0 :(得分:2)

如果它是从一个节点到另一个节点的路径,我建议您在子树上使用预先排序,其中包含您希望路径记录的起始节点的根节点。 更新:事实上,人工智能算法(以及图中的搜索路径)也可能有用。例如,非常简单的一个,BFS可能是有用的。