I need a hint for this exercise from the CLRS Algorithms book:
Prove that no matter what node we start at in a height-h binary search tree, k successive calls to Tree-Successor take O(k+h) time.
x
be the starting node and z
be the ending node after k
successive calls to TREE-SUCCESSOR.p
be the simple path between x
and z
inclusive.y
be the common ancestor of x
and z
that p
visits.p
is at most 2h
, which is O(h)
.output
be the elements that their values are between x.key
and z.key
inclusive.output
is O(k)
.k
successive calls to TREE-SUCCESSOR,
the nodes that are in p
are visited,
and besides the nodes x
, y
and z
,
if a sub tree of a node in p
is visited then all its elements are in output
.O(h+k)
.Hint: work out a small example, observe the result, try to extrapolate the reason.
To get started, here are some things to consider.
Start at a certain node, k succesive calls to Tree-Succcesor consititutes a partial tree walk. How many (at least and at most) nodes does this walk visit? (Hint: Think about key(x)). Keep in mind that an edge is visited at most twice (why?).
Final hint: The result is O(2h+k)
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With