AVL 树 - LST 和 RST 之间的最大节点数
AVL Tree - Highest number of nodes between LST and RST
我有一棵AVL树,里面有n个节点,左子根树和右子根树的节点最大差是多少?
所以我不太确定,但首先让我们用节点填充所有右子树,所以我们填充了 n/2 + 1 个节点,剩下 n - n/2 + 1 个节点在左子树中填满,我现在想在那里插入最小节点,这样高度就不会高于 1。所以我相信我需要添加大约 logn - 1 个节点,就像一条链(总是在右边 child 或总是在左边 child).
第二个想法,也许建立两个节点链,一个在右边sub-tree,一个在左边sub-tree,这样子树之间的高度不会超过1。但这不会是我猜的最大差异
有什么想法吗?
根据定义,左右子树最多相差1。假设大的有h + 1,小的只有h.
对于大一点的,一棵高度为h + 1的树最多可以有~ 2h(满树的情况).
对于较小的,节点数is known to be 1 / √5 ((1 + √5) / 2)h + 3 - 1.
所以,答案是2h - 1 / √5 ((1 + √5) / 2)h + 3 + 1, 以2h + 1 / √5 ((1 + √5) / 2)h + 3 - 1 = n。
对于大h和n,2h+1 / √5 ((1 + √5) / 2)h + 3 - 1 ~ 2h, 所以2h~n。
令人惊讶的是(至少对我而言),差异是 Ω(n)。
我有一棵AVL树,里面有n个节点,左子根树和右子根树的节点最大差是多少?
所以我不太确定,但首先让我们用节点填充所有右子树,所以我们填充了 n/2 + 1 个节点,剩下 n - n/2 + 1 个节点在左子树中填满,我现在想在那里插入最小节点,这样高度就不会高于 1。所以我相信我需要添加大约 logn - 1 个节点,就像一条链(总是在右边 child 或总是在左边 child).
第二个想法,也许建立两个节点链,一个在右边sub-tree,一个在左边sub-tree,这样子树之间的高度不会超过1。但这不会是我猜的最大差异
有什么想法吗?
根据定义,左右子树最多相差1。假设大的有h + 1,小的只有h.
对于大一点的,一棵高度为h + 1的树最多可以有~ 2h(满树的情况).
对于较小的,节点数is known to be 1 / √5 ((1 + √5) / 2)h + 3 - 1.
所以,答案是2h - 1 / √5 ((1 + √5) / 2)h + 3 + 1, 以2h + 1 / √5 ((1 + √5) / 2)h + 3 - 1 = n。
对于大h和n,2h+1 / √5 ((1 + √5) / 2)h + 3 - 1 ~ 2h, 所以2h~n。
令人惊讶的是(至少对我而言),差异是 Ω(n)。