Can both insert and findMin be implemented in constant time?
Read moreTextbook Solutions for Data Structures and Algorithm Analysis in Java
Question
One way to delete nodes from a known position in a leftist heap is to use a lazystrategy. To delete a node, merely mark it deleted. When a findMin or deleteMin isperformed, there is a potential problem if the root is marked deleted, since then thenode has to be actually deleted and the real minimum needs to be found, whichmay involve deleting other marked nodes. In this strategy, deletes cost one unit,but the cost of a deleteMin or findMin depends on the number of nodes that aremarked deleted. Suppose that after a deleteMin or findMin there are k fewer markednodes than before the operation.a. Show how to perform the deleteMin in O(k logN) time. b. Propose an implementation, with an analysis to show that the time to performthe deleteMin is O(k log(2N/k))
Solution
The first step in solving 6 problem number 24 trying to solve the problem we have to refer to the textbook question: One way to delete nodes from a known position in a leftist heap is to use a lazystrategy. To delete a node, merely mark it deleted. When a findMin or deleteMin isperformed, there is a potential problem if the root is marked deleted, since then thenode has to be actually deleted and the real minimum needs to be found, whichmay involve deleting other marked nodes. In this strategy, deletes cost one unit,but the cost of a deleteMin or findMin depends on the number of nodes that aremarked deleted. Suppose that after a deleteMin or findMin there are k fewer markednodes than before the operation.a. Show how to perform the deleteMin in O(k logN) time. b. Propose an implementation, with an analysis to show that the time to performthe deleteMin is O(k log(2N/k))
From the textbook chapter Priority Queues (Heaps) you will find a few key concepts needed to solve this.
Visible to paid subscribers only
Step 3 of 7)Visible to paid subscribers only
full solution