- 问答
- 2019-08-24 11:05:23 @
萌新初学树的重心,有一个问题:
“找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心。”
是什么意思?**感觉根据这句话的定义,似乎叶子节点的最大子树的节点数是最小的,所以重心是叶子节点?**(自己好弱)
“删去重心后,生成的多棵树尽可能平衡。”
似乎这两句话是矛盾的? 按这句话的道理说,那对于 二叉树的重心 ,就一定是 根节点 了?
蒟蒻不才,大家请指教。如果 觉得单纯的说理不能说明问题,就附一张树的图并说明其重心及原因。
困扰多天, 希望大家能帮帮我。
对于树的直径,本人还有一个问题:
树的直径可不可以采用以下的求法:
因为树的直径 只有先上再下,和直接下两种情况。
而直接下,我们可以理解为从\(v\)节点向上走到\(v\)节点再往下走。 所以只剩下一种情况。
然后,记录 以\(v\)节点为根的子树,从\(v\)开始一直向下走走到的最远距离。其实就是最深的叶子节点与其的距离。 为\(x\)数组
那么,显然这东西可以\(O(n)\)求出。(预处理叶子节点,然后向上递归至根)
同时,记录 和上面一样的,但是是次远距离 为\(y\)数组
显然最后 树直径的长度为
\[max{x_v+y_v}\]
这是\(O(n)\)的求法,感觉比较简洁。如果有误大家指出啊。
2 条评论
-
bfw (bfw) LV 8 @ 2019-08-24 15:36:41
或者说,这里的 最大子树的最小值 其实也包括:
切掉当前以\(v\)节点作为根的子树,余下子树的个数?也就是\(n-sz_v\)?
本人已经想通了,就是这样。
-
2019-08-24 11:15:18@
那个第二句话,我的理解有误,不一定是根节点。
按第二句话定义重心的话,应该比较好理解。
但是第一句话的意思实在难以明白
- 1