树的重心与直径 性质

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

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

树的重心

三种定义:

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

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

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

性质:

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

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

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

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

树的直径

求法:

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

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

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

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

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

相关推荐
我变成萤火虫25 分钟前
河南萌新联赛2026第(四)场:南阳理工学院
数据结构·c++·算法·贪心算法·stl·动态规划
To_OC3 小时前
LC 239 滑动窗口最大值:从暴力超时到单调队列一遍过
javascript·算法·leetcode
.道阻且长.4 小时前
9.LeetCode算法习题讲解--滑动窗口--无重复字符的最长字串
算法·leetcode·职场和发展·哈希算法
Shaoxi Zhang4 小时前
JAVA学习笔记035——对象和JSON格式
java·笔记·学习
陈皮波比茶4 小时前
Redis学习
数据库·redis·学习
余额瞒着我当琳5 小时前
C++--深拷贝三件套 + swap + 写时拷贝 + vector 扩容 + reserve
java·开发语言·c++
ltl5 小时前
HNSW:图索引如何击败树索引
算法
ShineWinsu6 小时前
对于C++:布隆过滤器(bloomfilter)的详细解析
c++·面试·位图·位运算·布隆过滤器·海量数据·比特位
曹牧6 小时前
C#:数字的定义和表示方式
算法·c#
minglie17 小时前
espidf的esp32版的webClient
学习