AVL树 - LST和RST之间的最大节点数

时间:2016-09-11 12:37:26

标签: algorithm tree avl-tree

我有一个AVL树,其中有n个节点,可以从左子根树和右子根树的节点的最大差异是什么?

所以我不太确定,但首先让我们用节点填充所有正确的子树,所以我们填充了n / 2 + 1个节点,我们留下n - 在左子树中n / 2 + 1个节点已满,我想在那里插入最小节点,因此高度不会高于1.所以我相信我需要添加关于logn-1个节点,像一条链子(总是对着正确的孩子,或者总是给左边的孩子)。

第二个想法,可能是建立两个节点链,一个在右子树中,一个在左子树中,因此子树之间的高度不会超过1。但这不是我猜的最大差异

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

根据定义,左右子树的差异最多为1。假设较大的高度 h + 1 ,较小的高度仅 h

对于较大的节点,可以在高度 h + 1 的树中的大多数节点是 ~2 h (案例一棵完整的树)。

对于较小的节点,节点数is known to be 1 /√5((1 +√5)/ 2) h + 3 - 1

所以,答案是 2 h - 1 /√5((1 +√5)/ 2) h + 3 + 1 2 h + 1 /√5((1 +√5)/ 2) h + 3 - 1 = n

对于大 h n 2 h + 1 /√5((1 +√5)/ 2) h + 3 - 1~2 h ,因此 2 h ~n

令人惊讶的是(至少对我而言),差异是Ω(n)