在以二叉树实现的二叉大根堆中(每个节点存储其父节点、左子节点和右子节点的指针),如果您拥有堆根的指针,您将如何实现插入操作?应该发生的是,该节点首先作为最后一行中的最后一个元素插入。对于基于数组的实现,可以将其追加到数组中,但是对于基于树的实现,您将如何找到正确的位置?
在以二叉树实现的二叉大根堆中(每个节点存储其父节点、左子节点和右子节点的指针),如果您拥有堆根的指针,您将如何实现插入操作?应该发生的是,该节点首先作为最后一行中的最后一个元素插入。对于基于数组的实现,可以将其追加到数组中,但是对于基于树的实现,您将如何找到正确的位置?
为了找到新节点应该插入的确切位置,我们使用二叉堆大小的二进制表示。这需要O(log N),然后我们将其上移需要O(log N)。因此插入操作需要O(log N)...有关详细说明,请查看我博客上有关二叉堆的帖子 -
http://theoryofprogramming.com/2015/02/01/binary-heaps-and-heapsort-algorithm/
希望这对你有所帮助,如果有的话,请告诉我...!☺