C++树的重心和直径 求解C语言中树的中心节点与最长路径(2)
导读:C++树的重心和直径,枚举所有节点,计算删除每一个节点后所有子树中的最大节点数量。从结果可知,只有当删除节点 1 后,得到子树的最大值是最小的,故节点 1 为此树的重
C++树的重心和直径

枚举所有节点,计算删除每一个节点后所有子树中的最大节点数量。从结果可知,只有当删除节点1后,得到子树的最大值是最小的,故节点1为此树的重心。
重心的特点:
- 树的重心如果不唯一,则至多有两个,且这两个重心相邻。如下图所示,节点
3和7都是树的重心,且在树上是相邻的。

- 以树的重心为根时,所有子树的大小都不超过整棵树大小的一半。
- 树中所有点到某个点的距离和中,到重心的距离和是最小的;如果有两个重心,那么到它们的距离和一样。
- 把两棵树通过一条边相连得到一棵新的树,那么新的树的重心在连接原来两棵树的重心的路径上。
- 在一棵树上添加或删除一个叶子,那么它的重心最多只移动一条边的距离。
查找树重心的算法思想:
直观来讲,删除一节点后,计算所有子树的最大值。但是,具体如何实施?
如删除节点3后,从逻辑上讲,整棵树被分成两个部分。节点3的子树部分和其它部分。

以节点3为根节点,使用DFS搜索算法,可以容易得到子树以及以3为根节点的树的节点数量,因为整棵树的节点数量是已知,如果知道了以节点3为根节点的子树的节点数,则其它部分的节点数量可以轻松计算出来:整棵树的节点数n-以3为根节点的子树的数量。
当然,在此过程中,需要记录最大值。如下图所示,最大值为5。
相关阅读
-
轻量应用服务器是什么 关于轻量服务器的作用
一篇方法教程,与您分享轻量应用服务器是什么和关于轻量服务器的作用方面的介绍,具体介绍如下: 腾讯云轻量应用服务器性能如何?CPU型号主频、内存、公网带宽和系统盘存储多维对比,
-
time wait状态存在的原因
本文为您带来的是的相关知识,下面IT袋网为您详细介绍 TIME_WAIT 状态是 TCP 协议中的一个状态,出现在连接的一端主动关闭连接后。 在这个状态中,连接的一方(通常是客户端)等待一段时
-
网站建设的步骤有哪些 网站构建的基本流程
为大家说一说网站建设的步骤有哪些和网站构建的基本流程的相关知识,下面IT袋为您详细介绍 网站建设有哪些流程,可参考如下: 一、确定网站的定位和目标 定位是指为你的网站确立一个明
-
电脑快捷操作:全选快捷键全面解析
今天小编详解电脑快捷操作的相关知识,接下来就是全面介绍。 在日常的电脑操作中,快捷键可以大大提高我们的工作效率。 其中,全选快捷键是最常用的一种,本文将详细介绍电脑上全选的


