找到树中节点集之间的最长路径

时间:2013-03-09 04:23:06

标签: algorithm data-structures tree longest-path

最近发现了一个编程问题。

给定一棵树,可以是非二进制的,也可以是单链(或线性),具有N个节点。

输入将是一组K个节点,表示为a1,a2 .... ak。 我想找到从这些K节点之一开始并在其中一个K节点(不同于起始节点)完成的最长的简单路径。 取决于N或K的对数算法应满足运行时间要求(例如:KlogK,KlogN),如果需要,应该在我期望的时间限制内。

谢谢

1 个答案:

答案 0 :(得分:2)

也许你可以尝试这种方法 -

  1. 从任何节点运行DFS以找到最远的叶节点,让我们称之为节点X。
  2. 运行另一个DFS以从X找到最远的节点。
  3. 您在步骤2中找到的路径是树中最长的路径。
  4. 这适用于所有树木,而不仅仅是二叉树。