【问题标题】:Why does an AVL tree with N nodes maintain C<=N/2?为什么具有 N 个节点的 AVL 树保持 C<=N/2?
【发布时间】:2017-11-05 09:46:44
【问题描述】:

如果 C 表示“独生子”节点的数量(当一个节点的父节点不为 null && 它没有兄弟节点时,该节点称为独生子),为什么我们对每个具有 N 个节点的 AVL 树都有这个: C

【问题讨论】:

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


    【解决方案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 属性不变的唯一允许配置。新根和两个子树的根都不是“唯一的子”节点。因此我们有 N=1+N1+N2 和 C=C1+C2。由于 C1

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

    【讨论】:

    • 知道了!非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多