求树的直径

欢迎来踩本人博客
树的直径:
就是树上最长路
方法 :
求两边DFS即可

步骤:
1.从任意一点进行dfs,然后找到一个最长路径,记录最远点u
2.然后从u再进行dfs,找最长路径,记录一点v。
(u,v)就是树的直径

证明:可以看这个视频的第27:00(求树直径的原理和证明)

第四届蓝桥杯a组

证明:
在这里插入图片描述
我们可以看出图中,树的直径是(4->2->5),长度为9.
我们一开始选定一个点dfs
如果是直径外一点,比如w1,从w1进行dfs找到的就是点4,路径就1->2->4,这个路径一定会与树的直径相交,而找到的4是直径的一端,那从4再进行dfs就是树的直径的另一端5,这样两遍dfs你就找到了树的直径
如果是直径内一点,比如w2,从w2开始dfs找到的最远点4,这个路径会被包含在树的直径里,那找到的点也就是树直径的一端,再dfs就可以找到另一端。
综上用两遍dfs就可以找到树的直径

posted @ 2020-04-11 13:50  回归梦想  阅读(72)  评论(0编辑  收藏  举报