为什么具有N个节点的AVL树保持C <= N / 2?

时间:2017-06-04 14:16:07

标签: java data-structures binary-tree binary-search-tree avl-tree

如果C表示&#34;只有孩子的数量&#34;节点(当一个节点的父节点不为空时,节点被称为唯一的子节点&amp;&amp;它没有兄弟节点),为什么我们对每个具有N个节点的AVL树都有这个节点:C <=(N / 2 )?

1 个答案:

答案 0 :(得分:1)

考虑高度为1的AVL树(即仅由根组成):条件明确成立(N = 1,C = 0)。

现在考虑高度为2的AVL树。可以有一个有2个孩子的根(N = 3,C = 0)或有一个孩子的根(N = 2,C = 1)。因此,条件也适用于高度为2的树木。

现在假设,条件适用于高度为h(h> = 2)和h-1的树,我们表明它也适用于高度为h + 1的树。我们可以通过一个新的根来构建一个高度为h + 1的树,其中一个高度为h的子节点和另一个高度为h或h-1的子节点。这些是唯一允许AVL属性保持不变的配置。新的根和两个子树的根都不是&#34;只有孩子&#34;节点。因此,我们有N = 1 + N1 + N2和C = C1 + C2。由于C1 <= N1 / 2且C2 <= N2 / 2,我们也得到C <= N / 2.

现在,通过归纳,条件适用于所有高度的AVL树。