树中最长路径的公共段
Posted
技术标签:
【中文标题】树中最长路径的公共段【英文标题】:Common segment of longest paths in a tree 【发布时间】:2013-03-07 14:44:05 【问题描述】:我遇到了一个编程问题
-
给定一棵加权树。
感兴趣的节点集,我们称这个集为 S。
我们需要返回最长的理想路径中最短的公共段。 理想路径是在属于上述集合 S 的顶点上开始和终止的路径。 不能保证公共路径存在。 我知道在线性时间内找到树中最长的路径,我们也可以轻松地将其扩展到理想路径的情况,但是 2 dfs 的经典算法在 找到最长的路径,但只是最长的路径长度。 谢谢。
【问题讨论】:
【参考方案1】:如果你有:
-
路径开始
路径长度,来自 DFS 或 BFS 等算法
路径结束
您可以轻松获取路径。 修改代码:
//current vertex is v, next is u, current length is l
u.length = l + 1;
u.visited = true;
cont.push(u);
添加行:
u.previous = v;
然后你可以通过以下方式找到路径:
v = path_end;
while(v != path_begin)
//mark, v belongs to "path"
v = v.previous
【讨论】:
对不起,我忘了说它是一棵加权树,也可以有很多最长的路径,主要任务是获取所有这些路径。以上是关于树中最长路径的公共段的主要内容,如果未能解决你的问题,请参考以下文章