堆 - 在未知输入上执行DeleteMax操作 - 实现

时间:2013-02-05 16:27:59

标签: algorithm data-structures heap complexity-theory

我需要你的帮助,试图找出/获得一个简单证明的方法。

假设给你一个包含n个不同元素的max-heap,x是深D中堆中的元素(在表示堆的树中)。现在假设我们正在执行一系列DeleteMax操作。

  1. 在从堆中提取x之前,需要执行的最大DeleteMax操作数是多少。

  2. 在从堆中提取x之前,需要执行的最小DeleteMax操作数是多少。

  3. 注意:

    我相信我确实设法通过指定如果x和他的父母是堆中最大的元素来证明第二个,那么在D + 1 DeleteMax操作之后将提取x(D中的D用于提取他的父母) )。

    我刚刚发现第一个方法不是很好,我不知道我需要使用什么方法才能正确证明它。

1 个答案:

答案 0 :(得分:2)

我认为你是对的。当只有x的父母和祖父母大于x,而不是表兄弟,叔叔等等时,第二种情况会很开心......只有前辈直接到根。

当只有x的子项小于x时,才会发生第一种情况。因此,如果堆具有高度H,则最大值将是高度H的完整堆减去高度H-D的完整堆。