树的重心与直径 性质
算法讲解120【扩展】树上问题专题3-树的重心_哔哩哔哩_bilibili
算法讲解121【扩展】树上问题专题4-树的直径_哔哩哔哩_bilibili
树的重心
三种定义:
1,以某个节点为根时,最大子树的节点数最少,那么这个节点是重心
2,以某个节点为根时,每颗子树的节点数不超过总节点数的一半,那么这个节点是重心
3,以某个节点为根时,所有节点都走向该节点的总边数最少,那么这个节点是重心
性质:
4,一棵树最多有两个重心,如果有两个重心,那么两个重心一定相邻
5,如果树上增加或者删除一个叶节点,转移后的重心最多移动一条边
6,如果把两棵树连起来,那么新树的重心一定在原来两棵树重心的路径上
7,树上的边权如果都为正数,不管边权怎么分布,所有节点都走向重心的总距离和最小
树的直径
求法:
1.两次dfs 找两个距离最远的点 不适用于有负边的树
2.树形dp 对于每个点找子树中的最长的两条链 适用于所有树
如果树上的边权都为正,则有如下直径相关的结论:
1,如果有多条直径,那么这些直径一定拥有共同的中间部分,可能是一个公共点或一段公共路径
2,树上任意一点,相隔最远的点的集合,直径的两端点至少有一个在其中