树的重心与直径 性质

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

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

树的重心

三种定义:

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

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

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

性质:

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

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

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

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

树的直径

求法:

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

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

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

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

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

相关推荐
A加ITIL教练长河achotsao5 分钟前
ITIL Master 战略领导者课后系列分享:AI编程正在重新划分研发与运维的边界
算法
hahaha60166 分钟前
FPGA+ARM实现AWB的全流程
人工智能·嵌入式硬件·算法·计算机视觉·fpga开发
李洱7 分钟前
LangChain 和 LangGraph 的区别:核心原理与使用场景
算法
夏幻灵9 分钟前
每日一题:LeetCode 206:反转链表——三指针与原地反转详解
算法·leetcode·链表
神仙别闹10 分钟前
基于C++实现的贪吃蛇游戏平台
java·c++·游戏
CQU_JIAKE16 分钟前
10.9【A】
数据结构
第25小时记录23 分钟前
数据结构与算法 -第 3 章 常用算法-动态规划
数据结构·python
王老师青少年编程1 小时前
2026年6月GESP真题及题解(C++三级): 选择题和判断题(题解)
c++·真题·gesp·答案·csp·三级·信奥赛
C++ 老炮儿的技术栈1 小时前
static的作用
c语言·c++·人工智能·单片机·c