小编典典

MAX-HEAPIFY中最坏的情况:“最坏的情况发生在树的底部恰好是一半满的时候”

algorithm

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

"the worst case occurs when the bottom level of the tree is exactly half full"

我猜想原因是在这种情况下,Max-Heapify必须通过左侧子树“向下浮动”。
但是我无法得到的是“为什么半满”?
如果左侧子树只有一个叶子,则Max-Heapify也可以向下浮动。那么,为什么不将其视为最坏的情况呢?


阅读 468

收藏
2020-07-28

共1个答案

小编典典

阅读整个上下文:

子树的每个子树的大小最大为2n / 3-最坏的情况是树的最后一行恰好占满一半时

由于运行时间T(n)是根据树(n)中的元素数量进行分析的,并且递归过程进入了子树之一,因此我们需要找到子树中相对于的节点数的上限n,这将产生那T(n) = T(max num. nodes in subtree) + O(1)

子树中节点数的最坏情况是最后一行的一侧尽可能地满,而另一侧则尽可能地空。这称为半满。并且左子树的大小将由限制2n/3

如果您提出的案例中只有几个节点,那么这是无关紧要的,因为可以考虑O(1)并忽略所有基本案例。

2020-07-28