Can some one describe an algorithm that finds all keys smaller than x in an array implementation of a min-heap. I want the running time to be at least O(k) where k is the number of keys reported.
I've been scratching my head for a while now with this.
To get a running time of 'at least' something is not so difficult, I assume you mean 'at most'.
Unfortunately, a min-heap is not very good at finding anything else than the smallest value.
You can do a breadth-first depth-first scan of the tree-view of your heap, and terminate every branch where you have reached X. This will be O(k), but complicated.
To find all Y where Y <= X you might as well scan the entire array, this will be O(n) but with much less overhead.
The choice depends on the ratio n/k