我试图了解堆的工作原理。
我有以下堆:
现在我要提取最大值。
我要做的第一件事是删除根42,然后将最后一个元素放在堆(6)中的根位置。然后,我执行max-heapify来找到正确的6点。
6我大于两个孩子,所以我将其与最大的孩子41交换,使41成为新的根。
6现在有孩子3和9,因此我再次与较大的孩子9交换它。
最后,我得到了堆
我正确执行了extract-max吗?
答案 0 :(得分:0)
是的! Extract max递归工作。在三个(即父级和两个子级)中找到最大的元素。如果最大不是父级,则将最大元素交换给父级,并将extract max调用为最大。