树的重心与直径 性质

算法讲解120【扩展】树上问题专题3-树的重心_哔哩哔哩_bilibili

算法讲解121【扩展】树上问题专题4-树的直径_哔哩哔哩_bilibili

树的重心

三种定义:

1,以某个节点为根时,最大子树的节点数最少,那么这个节点是重心

2,以某个节点为根时,每颗子树的节点数不超过总节点数的一半,那么这个节点是重心

3,以某个节点为根时,所有节点都走向该节点的总边数最少,那么这个节点是重心

性质:

4,一棵树最多有两个重心,如果有两个重心,那么两个重心一定相邻

5,如果树上增加或者删除一个叶节点,转移后的重心最多移动一条边

6,如果把两棵树连起来,那么新树的重心一定在原来两棵树重心的路径上

7,树上的边权如果都为正数,不管边权怎么分布,所有节点都走向重心的总距离和最小

树的直径

求法:

1.两次dfs 找两个距离最远的点 不适用于有负边的树

2.树形dp 对于每个点找子树中的最长的两条链 适用于所有树

如果树上的边权都为正,则有如下直径相关的结论:

1,如果有多条直径,那么这些直径一定拥有共同的中间部分,可能是一个公共点或一段公共路径

2,树上任意一点,相隔最远的点的集合,直径的两端点至少有一个在其中

相关推荐
代码山河3 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
C^h3 小时前
c++ string
开发语言·c++
释厄6233 小时前
AI学习层更新与跨体转移律——人类社会同构·不缺理解缺 U
人工智能·学习
raindayinrain3 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
学逆向的3 小时前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao4 小时前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++
小徐不徐说5 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
大都督会赢的5 小时前
C++第一节课
开发语言·c++
UIU1145 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
论文复现现场5 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算