具有n个元素的堆的高度

时间:2019-04-18 21:27:07

标签: data-structures binary-tree heap

我有以下问题:

“一棵树的高度是该树的最长分支的长度。从高度的定义来看,具有n个元素的堆的高度是多少?请给出清晰准确的答案。”

堆=二叉树

我知道一个完整的二叉树的数量为2 ^(n°级-1)

到目前为止,我尝试了以下操作:

如果存在三个堆(2个完整的二叉树和1个非完整的二叉树),则:

  • 堆A =是一个完整的二叉树,高度为H
  • 堆B =是一个高度为2的二叉树,其节点数大于A但小于C(所以与C的高度相同-我认为吗?)
  • 堆C =是高度为H +1的二叉树

我可以说B的高度在A和C的高度之间,并且B的元素数在2 ^(n-1的n°水平)和2 ^(n-1的C-1的水平之间) )。

但是我不确定具有n个元素的堆的高度如何。

1 个答案:

答案 0 :(得分:2)

您知道堆是一个完整的二叉树。

让我们看一下堆:

enter image description here

我们可以看到:

  • 如果堆具有1个节点,则其高度将为1

  • 如果堆具有2到3个节点,则其高度将为2

  • 如果堆具有4到7个节点,则其高度将为3

  • ...

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

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

这仅发生在以下节点上:1、2、4、8、16、32,...

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