【发布时间】:2017-07-13 21:01:19
【问题描述】:
我只想获取源节点与每个节点的距离。但它与图问题不同,因为它是一棵树,每个节点之间的路径都是唯一的,所以我希望答案能在更有效的时间内完成。 是否有可能在有效的时间内得到答复?
【问题讨论】:
标签: algorithm graph tree computer-science
我只想获取源节点与每个节点的距离。但它与图问题不同,因为它是一棵树,每个节点之间的路径都是唯一的,所以我希望答案能在更有效的时间内完成。 是否有可能在有效的时间内得到答复?
【问题讨论】:
标签: algorithm graph tree computer-science
你说得对,在树中,找到两个节点之间的路径的难度比在一般图中要低很多,因为一旦你找到 any 路径(至少,一个没有周期)你知道它是最短的。因此,您所要做的就是找到从给定节点开始并到达其他节点的所有路径。您可以在时间 O(n) 内使用深度优先或广度优先搜索来执行此操作。要查找长度,只需记录您在旅行时沿着您走过的路径看到的边的长度。
【讨论】:
这与“图问题”没有不同:树是图的一种特殊情况。 Dijkstra's algorithm 是图遍历的标准。只需稍微修改一下:保留所有找到的路径长度,不要担心比较更新步骤,因为您将保留所有结果。继续,直到您用完要检查的节点,并且有您的路径长度。
【讨论】: