【问题标题】:Tree Traversal - Find between two leaves树遍历 - 在两片叶子之间查找
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    相关资源
    最近更新 更多