专题 树上问题之树的直径&好题精析

概念解释

引言

        作为洛谷上面相同的两道题,虽然很有难度,但是却的确很适合拿来说明树上的直径这一方面的有趣的内容。但是在这之前,我们还是先说明一下相关的概念。

定义

        我们将一棵树 T = ( V,E ) 的直径定义为max ( u,v ) ,( u,v \in V ),也就是说,树中所有最短路径距离的最大值即为树的直径。

        这时当有如下疑问:

  • 为什么树的定义类似于图?(T = ( V,E )的形式)
  • 什么是树上最短路径的最大值?
  • 如何去求解?

        以下笔者将一一回答。

性质

        首先是关于这类问题的一个看法。在笔者看来,部分参考资料和论文将这一类树上问题归类于“高级数据结构”的范畴,其实道理很简单:因为是树。但是这一类的树问题(遍存储历、树链剖分、LCA、重心等)凸显的更像是图论的算法:强大的建模意识,抽象的逻辑思维;而并不具有数据结构具有“增删求查”的鲜明特性。

        所以依据对于第一个问题的回答:由树的性质可知,具有n个节点的树,一定具有n-1 条边;从依赖关系的角度看,树实际上介于线性结构(一个前驱(父亲) 一个后驱(儿子))和图之间(一或多个前驱(父亲) 一或多个后驱(儿子))。归根结底:树可以看成是一种特殊的图。

        什么是树上最短路径的最大值?先回答最短路径。定义:对于节点u,v,两者之间的路径长度为这两点路径所经树上边的权值之和。全局最大,即为直径。有这个,显然有以下几个平凡的结论:

  • 性质1.树中距离最远的两个点所在的简单路径就是树的直径。这又称为树的直径的定义;
  • 性质2.树中的最长链就是树的直径
  • 性质3.树的直径不一定是唯一的,但是直径的权值和是唯一的。这个很好理解,有不一样长的(无论是长还是短)都不能称作直径。

        如何去求解?还是继续

posted @ 2025-07-08 21:41  枯骨崖烟  阅读(18)  评论(0)    收藏  举报  来源