【问题标题】:Proof for depth of balanced search tree平衡搜索树深度的证明
【发布时间】:2009-11-07 23:38:49
【问题描述】:

如果 T 是具有 n 个元素的平衡 BST,L 是左子树,R 是右子树,我如何证明它的深度小于或等于 2log(n) + 1?

我有一个归纳证明,但我不明白。

(我知道stackoverflow主要是面向编程的,但是我发现了一些关于二叉搜索树的问题并决定尝试一下,希望我没有做不好的事情。:))

【问题讨论】:

    标签: binary-tree depth proof binary-search-tree


    【解决方案1】:

    根据“平衡”的定义,同一节点的每个左右子树的深度最多相差一个。 “深度”通常被定义为“从树根到叶子的最长步行步数”,因此例如具有一个根和两个叶子的 BST(三个元素只能以它们可以排列在平衡 BST 中的方式)是据说有深度一(看起来你正在使用一个稍微不同的定义,它会给它深度二?),就像一个有一个根和一个叶子的一样(这个叶子是根的左子树还是右子树都没有区别),而只有一个根也是叶子(单个元素)的人的深度为 0。(没有零元素的 BST)。

    所以对于 n D(n) < log(n) + 1(log 表示以 2 为底的对数)通过检查,因为 1 = D(2) &lt; log(2) + 1 = 2(还有 @987654324 @ 不等式的 RHS,log(3) + 1,实际上是 &gt; 2) 和 0 = D(1) &lt; log(1) + 1 = 1——这给了我们归纳基础。

    为了通过归纳完成证明,我们必须证明如果D(k) &lt; log(k) + 1 对所有k &lt; n,那么它也遵循D(n) &lt; log(n) + 1

    如果n是奇数,显然左右子树各有(n-1)/2个元素,并且树的深度比子树多1;但是然后D(n) = 1 + D((n-1)/2) &lt; 1 + 1 + log((n-1)/2)(根据归纳假设)= 1 + log(n-1)(因为log((n-1)/2) = log(n-1) - 1)因此更不用说&lt; 1 + log(n),QED。

    如果n 是偶数,您只需使用log(n) 而不是log(n-1) 执行相同的步骤,并且没有“更进一步”完成,那么证明仍然成立。

    【讨论】:

    • 您提供的证明是针对 D(n)
    • @sebkom,所以你可能使用了不同的深度定义,正如我在开头提到的那样,但即便如此,我也不明白为什么 RHS 需要像你所拥有的那么大。
    【解决方案2】:

    如果平衡二叉树完整,则您的答案是正确的,左右子树中的元素数可以是 (n-1)/2,但如果它不完整,则元素数不需要是 (n-1) /2 作为最后一层可能有不同的元素

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-18
      • 1970-01-01
      相关资源
      最近更新 更多