Coding is the closest thing we have to superpower !
描述
给你一棵树,求树的重心节点,如果有多个,从小到大输出所有重心。
输入
第一行输入一个整数n。
接下来n - 1行每行两个整数a,b表示一条树边。
1 \le n \le 10000, 1 \le a, b \le n
输出
从小到大输出所有重心。
样例
输入
3 1 2 1 3
输出
1
输入
4 3 1 1 2 2 4
输出
1 2
输入
7 1 2 2 6 6 7 2 3 3 4 4 5
输出
2
提示
树的重心有下面几条常见性质:
定义1:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心。
定义2:以这个点为根,那么所有的子树(不算整个树自身)的大小都不超过整个树大小的一半。
性质1:树中所有点到某个点的距离和中,到重心的距离和是最小的;如果有两个重心,那么他们的距离和一样。
性质2:把两个树通过一条边相连得到一个新的树,那么新的树的重心在连接原来两个树的重心的路径上。
性质3:把一个树添加或删除一个叶子,那么它的重心最多只移动一条边的距离。
标签