I'm looking for an algorithm to merge two binary search trees of arbitrary size and range. The obvious way I would go about implementing this would be to find entire subtrees whose range can fit into an arbitrary external node in the other tree. However, the worst case running time for this type of algorithm seems to be on the order of O(n+m)
where n
and m
are the size of each tree respectively.
However, I've been told that this could be done in O(h)
, where h
is the height of the tree with the larger height. And I'm completely lost on how this is possible. I've tried experimenting with rotating one the trees first, but rotating a tree into a spine is already O(h).
O(log n)
with a simple move node function? $\endgroup$n
. Only full or complete binary trees have a height logarithmic to their total number of nodes. $\endgroup$