1. 树的直径
概念:树中的最长路。
求法:两次深搜或DP。
1-两次深搜:任找一点A为源点,深搜遍历得到最远点B,这个最远点B必定在直径中(感性想想,以A点为源点找到的最长路后面一段必定属于树的直径的一部分);再以这个最远点B为源点深搜遍历求一个最长路,这个最长路即为树的直径。
2-DP:显然最长路的两个端点必然是叶子或者根节点。设f(i)表示到i最远的叶子,g(i)表示到i次远的叶子,则有
f(i)=max{f(j)}+1;
g(i)=second{f(j)}+1;
其中j必须是i的儿子,计算顺序是自底向上。最终答案为
max{f(i)+g(i)}+1
2. 树的中心
概念:树的直径的中点。
求法:有多种,如DP,广搜,深搜等。
简单的方法是,先求树的直径,再找到直径中点即可。