我想弄清楚堆是怎么工作的。
我有以下堆:

现在我要提取最大值。
我做的第一件事是删除根42,然后将堆(6)中的最后一个元素放在根位置。然后我执行max-heapify为6找到正确的位置。
我比它的两个孩子大,所以我把它和最大的41交换,使41成为新的根。
现在有了3和9的孩子,所以我再一次把它和更大的孩子9交换。
最后,我得到了这个堆

我做得对吗?
发布于 2019-04-01 08:05:05
是!Extract工作recursively.find --在三个父元素中最大的一个元素,也就是它们的两个最大的children.If元素,不是父交换最大的元素,而是最大的父元素,调用提取最大到最大的元素。
https://stackoverflow.com/questions/55449986
复制相似问题