【问题标题】:Height of heap with n elements具有 n 个元素的堆的高度
【发布时间】:2019-09-09 06:11:52
【问题描述】:

我有以下问题:

“树的高度是树的最长分支的长度。从高度的定义来看,n个元素的堆的高度是多少?用你的答案给出清晰准确的解释。”

堆=二叉树

我知道一棵完全二叉树的个数是2^(n° of levels - 1)

到目前为止,我尝试了以下方法:

如果有 3 个堆(2 个完全二叉树和 1 个不完全二叉树)使得:

  • 堆 A = 是一棵完全二叉树,高度为 H
  • 堆 B = 是一个高度二叉树,其节点比 A 多但比 C 少(所以与 C 具有相同的高度 - 我认为?)
  • 堆 C = 是高度为 H + 1 的二叉树

我可以说 B 的高度介于 A 和 C 的高度之间,B 的元素数量介于 2^(n° 个 A - 1 级) 和 2^(n° 个 C - 1 级之间)。

但我不知道有 n 个元素的堆的高度是多少。

【问题讨论】:

    标签: data-structures binary-tree heap


    【解决方案1】:

    众所周知,堆是一棵完全二叉树。

    让我们看一些堆:

    我们可以看到:

    • 如果堆有 1 个节点,它的高度将为 1

    • 如果堆有 2 到 3 个节点,它的高度将为 2

    • 如果堆有 4 到 7 个节点,它的高度将为 3

    • ...

    • 如果堆有 2^i 到 2^(i+1) - 1 个节点,它的高度将为 i

    请注意,只有当我们用节点填充某个级别并开始一个新节点时,堆的高度才会增加。

    这只发生在节点上:1、2、4、8、16、32、...

    所以一个有 n 个节点的堆的高度 floor(log2(n)) + 1

    【讨论】:

    • 嗨,即使您使用的是索引从 1 开始的系统,在第 5 点中,高度为 i 的堆中的最小元素数将为 2^(i-1),最大值为同一棵树中的元素数将为 (2^i) -1。
    • 但是如果堆有1个节点,高度不是0?
    猜你喜欢
    • 2017-03-23
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    相关资源
    最近更新 更多