我需要你的帮助,设法找到一个简单的证据。
假设给您一个包含n个不同元素的max堆,而x是堆中深度D(在表示堆的树中)的元素现在假设我们正在执行一系列DeleteMax操作。
在从堆中提取X之前预生成的DeleTeMax操作的最大数目是多少?
在从堆中提取x之前,需要执行的deletemax操作的最小数目是多少?
注:
我相信我已经证明了第二个,如果x和他的父元素是堆中最大的元素,那么x将在d+1 deletemax操作之后被提取(其中d个是专门提取他的父元素的)。
我刚刚发现第一种方法不是很好,我不确定我需要使用什么方法来证明它是正确的。

最佳答案

我认为你是对的。第二种情况是只有X的父母和祖父母大于X,而不是表亲、叔叔等等……只有前辈在一条直线上到根。
第一种情况将发生在只有X的X小于X的情况下。因此,如果堆的高度H,最大值将是一个完整的H堆,减去一个完整的高度H-D堆。

10-02 12:06