树的重心与直径 性质

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

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

树的重心

三种定义:

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

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

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

性质:

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

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

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

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

树的直径

求法:

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

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

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

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

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

相关推荐
MicroTech2025几秒前
微算法科技(NASDAQ MLGO)探索自适应差分隐私机制(如AdaDP),根据任务复杂度动态调整噪声
人工智能·科技·算法
say_fall2 分钟前
数据结构之顺序表:一款优秀的顺序存储结构
c语言·数据结构
是码农一枚4 分钟前
全域互联,统一管控:EasyCVR构建多区域视频监控“一网统管”新范式
算法
听情歌落俗10 分钟前
c++通讯录管理系统
开发语言·c++·算法
光头闪亮亮20 分钟前
C++使用nlohmann/json库解析JSON数据应用示例
c++
Peace & Love48721 分钟前
C++初阶 -- 模拟实现list
开发语言·c++·笔记
超级大只老咪23 分钟前
蓝桥杯知识点大纲(JavaC组)
java·算法·蓝桥杯
!chen24 分钟前
Unity[法线贴图]原理与实践
算法
G_dou_35 分钟前
并发编程基础
算法·rust
丰锋ff1 小时前
英一2013年真题学习笔记
笔记·学习