Computer Science Asked on February 27, 2021
I am having trouble with coming up for a suitable algorithm for this question. A max-heap is essentially visualized as a binary tree not a binary search tree. Also the runtime of the algorithm must depend only on the number of elements in the output. I was thinking of doing a preorder traversal on the max heap. While doing the preorder traversal, if the value of a node is less than the given value x, we return to the previous recursive call. All child nodes in a max heap are less than the parent node. Otherwise we output current node and recur on the children.
I am not sure however if the runtime of this algorithm depends only on the number of elements in the output.
Anybody have other suggestions/thoughts? Thanks.
The algorithm you're describing is basically correct.
To summarize in one sentence: "If the current value is less than $x$, turn back."
The reason it has the desired time complexity is because the set of the nodes you are visiting is precisely:
So the total number of times the body of your function gets executed is no more than $2k+1$.
Correct answer by Сергей Макеев on February 27, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP