专题 树上问题之树的直径&好题精析
概念解释
引言
作为洛谷上面相同的两道题,虽然很有难度,但是却的确很适合拿来说明树上的直径这一方面的有趣的内容。但是在这之前,我们还是先说明一下相关的概念。
定义
我们将一棵树 的直径定义为
,也就是说,树中所有最短路径距离的最大值即为树的直径。
这时当有如下疑问:
- 为什么树的定义类似于图?(
的形式)
- 什么是树上最短路径的最大值?
- 如何去求解?
以下笔者将一一回答。
性质
首先是关于这类问题的一个看法。在笔者看来,部分参考资料和论文将这一类树上问题归类于“高级数据结构”的范畴,其实道理很简单:因为是树。但是这一类的树问题(遍存储历、树链剖分、LCA、重心等)凸显的更像是图论的算法:强大的建模意识,抽象的逻辑思维;而并不具有数据结构具有“增删求查”的鲜明特性。
所以依据对于第一个问题的回答:由树的性质可知,具有个节点的树,一定具有
条边;从依赖关系的角度看,树实际上介于线性结构(一个前驱(父亲) 一个后驱(儿子))和图之间(一或多个前驱(父亲) 一或多个后驱(儿子))。归根结底:树可以看成是一种特殊的图。
什么是树上最短路径的最大值?先回答最短路径。定义:对于节点,
,两者之间的路径长度为这两点路径所经树上边的权值之和。全局最大,即为直径。有这个,显然有以下几个平凡的结论:
- 性质1.树中距离最远的两个点所在的简单路径就是树的直径。这又称为树的直径的定义;
- 性质2.树中的最长链就是树的直径。
- 性质3.树的直径不一定是唯一的,但是直径的权值和是唯一的。这个很好理解,有不一样长的(无论是长还是短)都不能称作直径。
如何去求解?还是继续

浙公网安备 33010602011771号