Szukam algorytmu do połączenia dwóch drzew wyszukiwania binarnego o dowolnej wielkości i zakresie. Oczywisty sposób byłoby przejść o wdrażaniu tego byłoby znaleźć całe poddrzewa, których zakres można dopasować do dowolnego węzła zewnętrznego w drugim drzewie. Jednak najgorszy czas działania tego typu algorytmu wydaje się być w kolejności, O(n+m)
gdzie n
i m
są wielkości odpowiednio każdego drzewa.
Powiedziano mi jednak, że można to zrobić w miejscu O(h)
, gdzie h
jest wysokość drzewa o większej wysokości. I jestem całkowicie zagubiony, jak to jest możliwe. Próbowałem najpierw eksperymentować z obracaniem jednego drzewa, ale obrócenie drzewa do kręgosłupa to już O (h).
O(log n)
dzięki prostej funkcji przenoszenia węzła?
n
. Tylko pełne lub pełne drzewa binarne mają logarytmiczną wysokość w stosunku do całkowitej liczby węzłów.