树的重心与直径 性质

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

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

树的重心

三种定义:

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

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

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

性质:

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

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

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

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

树的直径

求法:

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

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

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

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

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

相关推荐
星辰徐哥1 分钟前
C++测试与调试:确保代码质量与稳定性
开发语言·c++
jghhh011 分钟前
VC++ 屏幕锁定、关机、托盘工具源代码
开发语言·c++
pwn蒸鱼7 分钟前
leetcode:92. 反转链表 II
算法·leetcode·链表
邪修king10 分钟前
【UE4/UE5 萌新向】有C++基础如何快速入门虚幻引擎?超详细图文全揭秘!
c++·ue5·ue4
深念Y10 分钟前
Harness Engineering:我的HomeSense Agent 架构演进
人工智能·算法·架构·智能家居·agent·小爱同学·harness
Shadow(⊙o⊙)11 分钟前
C语言学习中需要的额外函数
c语言·开发语言·学习
Imxyk13 分钟前
P9244 [蓝桥杯 2023 省 B] 子串简写
数据结构·c++·算法
艾莉丝努力练剑14 分钟前
【Linux线程】Linux系统多线程(四):线程ID及进程地址空间布局,线程封装
java·linux·运维·服务器·c语言·c++·学习
colus_SEU14 分钟前
SVM 面试题总结
算法·机器学习·支持向量机
方便面不加香菜14 分钟前
C++ 类和对象(二)
开发语言·c++