Я ищу алгоритм для объединения двух двоичных деревьев поиска произвольного размера и диапазона. Очевидный способ , которым я бы идти о реализации этого было бы найти целые поддерева чьих диапазона может поместиться в произвольный внешний узел в другом дереве. Однако наихудшее время выполнения для этого типа алгоритма, по-видимому, имеет порядок O(n+m)
где n
и m
размер каждого дерева соответственно.
Тем не менее, мне сказали, что это можно сделать там O(h)
, где h
высота дерева больше, чем высота. И я полностью потерян, как это возможно. Я попытался сначала поэкспериментировать с поворотом одного из деревьев, но поворот дерева в позвоночник - это уже O (h).
O(log n)
с помощью простой функции перемещения узла?
n
. Только полные или полные двоичные деревья имеют высоту, логарифмическую по отношению к их общему количеству узлов.