Deletion in min/max heaps

Question Detail: 

I think I'm confused about deletion in heaps, and since I have an exam today, I'm looking for your help to correct me.

I will post photos since it will makes it a bit more clear.

Note(forget about deleting the root)

enter image description here

What I understand is that , heaps only deletes the root element or the top. So, I made 2 solutions and I'm kindly asking which solution is the correct one.

enter image description here

Q:the heapness will be violated, I will have to replace it by the rightmost element bottom down right? (32) enter image description here

Asked By : Sobiaholic
Best Answer from StackOverflow

Question Source : http://cs.stackexchange.com/questions/6990

Answered By : Joe

A min-heap typically only supports a delete-min operation, not an arbitrary delete(x) operation. I would implement delete(x) as a composition of decrease-key(x, $-\infty$), and delete-min. Recall, that to implement decrease-key, you would bubble up the element to maintain the heap property (in this case all the way to the root). In a binary heap, to implement the delete-min operation, you replace the root by the last element on the last level, and then percolate that element down.

To summarize, to delete(x), bubble-up the element all the way to the root, then delete the element and put the last element in the heap at the root, then percolate down to restore the heap property.

No comments

Powered by Blogger.