一尘不染

Max-Heapify中最坏的情况-如何获得2n / 3?

algorithm

在CLRS,第三版,第155页中,假定在MAX-HEAPIFY中,

子树的每个子树的大小最大 为2n / 3- 最坏的情况是树的底部恰好是一半满了。

我知道为什么当树的底部恰好是一半满时最糟糕。在这个问题中还回答了MAX-HEAPIFY中的最坏情况:“最坏情况发生在树的底部恰好是一半满的时候”

我的问题是如何获得2n / 3?

为什么如果底层为半满,则子树的大小最大为2n / 3?

如何计算?

谢谢


阅读 242

收藏
2020-07-28

共1个答案

一尘不染

在每个节点上恰好有0个或2个子节点的树中,具有0个子节点的节点数比具有2个子节点的节点数多1。{说明:高度为h的节点数为2 ^h,几何级数的求和公式等于(从0到h-1的节点总和)+1;并且所有从高度0到h-1的节点都是正好有2个子节点的节点}

    ROOT
  L      R
 / \    / \
/   \  /   \
-----  -----
*****

令k为R中的节点数。L中的节点数为k +(k + 1)= 2k +1。节点总数为n = 1 +(2k + 1)+ k = 3k + 2
(根加L加R)。该比率是(2k+1)/(3k+2),在上面以2/3限制。常数不能小于2/3,因为当k达到无穷大时的极限是2/3。

2020-07-28