我是否正确地在此最大堆上执行提取最大操作?

问题描述 投票:0回答:1

我试图了解堆是如何工作的。

我有以下堆:

enter image description here

现在我想提取最大值。

我要做的第一件事是删除根42,然后将最后一个元素放在堆(6)中的根位置。然后我执行max-heapify以找到6的正确位置。

6我比它的两个孩子大,所以我把它与最大的孩子41交换,使41新的根。

6现在有孩子3和9,因此我再次与较大的孩子交换9

最后我最终得到了堆

enter image description here

我是否正确执行了extract-max?

data-structures heap
1个回答
0
投票

是!以递归方式提取max工作。找到三个中最大的元素,即父子节点和子节点中的两个子节点。如果最大元素不是父交换最大元素到父节点,则调用提取最大值到最大值。

© www.soinside.com 2019 - 2024. All rights reserved.