我试图了解堆是如何工作的。
我有以下堆:
现在我想提取最大值。
我要做的第一件事是删除根42,然后将最后一个元素放在堆(6)中的根位置。然后我执行max-heapify以找到6的正确位置。
6我比它的两个孩子大,所以我把它与最大的孩子41交换,使41新的根。
6现在有孩子3和9,因此我再次与较大的孩子交换9
最后我最终得到了堆
我是否正确执行了extract-max?
是!以递归方式提取max工作。找到三个中最大的元素,即父子节点和子节点中的两个子节点。如果最大元素不是父交换最大元素到父节点,则调用提取最大值到最大值。