【发布时间】:2013-09-23 19:06:24
【问题描述】:
我有一个网络节点图,我需要在两点之间建立一个节点列表。起初对我来说听起来很简单,但答案却让我难以捉摸:(
鉴于(简化的)数据结构:
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
我如何构建一个算法(或者你能建议一个算法)来构建遍历节点并构建两点之间所有节点的列表?这棵树大部分是线性的,除了少数不是线性的。
他们希望能够识别从分支或叶端开始的节点。
【问题讨论】:
-
这不是一棵树,它是一个有向(二元)图。一棵树的特点是在任何两个节点之间都有一条唯一的路径(或者,没有循环),但是从 8 到 5 有两条路径:8-4-5 和 8-6-5。无论如何,您想要的算法是广度优先搜索。
标签: php algorithm tree tree-traversal