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


Tree Traversal - Find between two leaves

我有一个网络节点映射,我需要在两点之间建立一个节点列表。起初对我来说听起来很简单,但答案却让我无法:(

给定以下(简化的)数据结构:

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

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

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

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