/ Vijos / 讨论 / 问答 /

关于树的重心

萌新初学树的重心,有一个问题:

“找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心。”

是什么意思?**感觉根据这句话的定义,似乎叶子节点的最大子树的节点数是最小的,所以重心是叶子节点?**(自己好弱)

“删去重心后,生成的多棵树尽可能平衡。”

似乎这两句话是矛盾的? 按这句话的道理说,那对于 二叉树的重心 ,就一定是 根节点 了?

蒟蒻不才,大家请指教。如果 觉得单纯的说理不能说明问题,就附一张树的图并说明其重心及原因。

困扰多天, 希望大家能帮帮我。


对于树的直径,本人还有一个问题:

树的直径可不可以采用以下的求法:

因为树的直径 只有先上再下,和直接下两种情况。

而直接下,我们可以理解为从\(v\)节点向上走到\(v\)节点再往下走。 所以只剩下一种情况。

然后,记录 以\(v\)节点为根的子树,从\(v\)开始一直向下走走到的最远距离。其实就是最深的叶子节点与其的距离。 为\(x\)数组

那么,显然这东西可以\(O(n)\)求出。(预处理叶子节点,然后向上递归至根)

同时,记录 和上面一样的,但是是次远距离 为\(y\)数组

显然最后 树直径的长度为

\[max{x_v+y_v}\]

这是\(O(n)\)的求法,感觉比较简洁。如果有误大家指出啊。

2 条评论

  • @ 2019-08-24 15:36:41

    或者说,这里的 最大子树的最小值 其实也包括:

    切掉当前以\(v\)节点作为根的子树,余下子树的个数?也就是\(n-sz_v\)?

    本人已经想通了,就是这样。

  • @ 2019-08-24 11:15:18

    那个第二句话,我的理解有误,不一定是根节点。

    按第二句话定义重心的话,应该比较好理解。

    但是第一句话的意思实在难以明白

  • 1