标签: data-structures binary-tree heap
我有以下问题:
“一棵树的高度是该树的最长分支的长度。从高度的定义来看,具有n个元素的堆的高度是多少?请给出清晰准确的答案。” >
堆=二叉树
我知道一个完整的二叉树的数量为2 ^(n°级-1)
到目前为止,我尝试了以下操作:
如果存在三个堆(2个完整的二叉树和1个非完整的二叉树),则:
我可以说B的高度在A和C的高度之间,并且B的元素数在2 ^(n-1的n°水平)和2 ^(n-1的C-1的水平之间) )。
但是我不确定具有n个元素的堆的高度如何。
答案 0 :(得分:2)
您知道堆是一个完整的二叉树。
让我们看一下堆:
我们可以看到:
如果堆具有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