Data structures 包含n个元素的堆的高度

Data structures 包含n个元素的堆的高度,data-structures,binary-tree,heap,Data Structures,Binary Tree,Heap,我有以下问题: “树的高度是树的最长分支的长度。从高度的定义来看,一个包含n个元素的堆的高度是多少?请用您的答案给出清晰而准确的解释。” 堆=二叉树 我知道一个完整的二叉树的数目是2^(n°的级别-1) 到目前为止,我尝试了以下方法: 如果有三个堆(2个完全二叉树和1个非完全二叉树),则: Heap A=是一个完整的二叉树,高度为H Heap B=是一个高度为二叉树,节点数比a多,但比C少(我认为它的高度与C相同?) 堆C=是高度为H+1的二叉树 我可以说,B的高度在A和C的高度之间,B的元

我有以下问题:

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

堆=二叉树

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

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

如果有三个堆(2个完全二叉树和1个非完全二叉树),则:

  • Heap A=是一个完整的二叉树,高度为H
  • Heap B=是一个高度为二叉树,节点数比a多,但比C少(我认为它的高度与C相同?)
  • 堆C=是高度为H+1的二叉树
我可以说,B的高度在A和C的高度之间,B的元素数量在2^(A-1的n°水平)和2^(C-1的n°水平)之间


但我不知道如何计算包含n个元素的堆的高度。

正如您所知,堆是一个完整的二叉树

让我们看看一些堆:

我们可以看到:

  • 若堆有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

Hi,即使使用索引从1开始的系统,在点#5中,高度i堆中的最小元素数将为2^(i-1),同一树中的最大元素数将为(2^i)-1。