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

时间:2019-04-01 07:27:24

标签: data-structures heap

我试图了解堆的工作原理。

我有以下堆:

enter image description here

现在我要提取最大值。

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

6我大于两个孩子,所以我将其与最大的孩子41交换,使41成为新的根。

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

最后,我得到了堆

enter image description here

我正确执行了extract-max吗?

1 个答案:

答案 0 :(得分:0)

是的! Extract max递归工作。在三个(即父级和两个子级)中找到最大的元素。如果最大不是父级,则将最大元素交换给父级,并将extract max调用为最大。