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 ni msą wielkości odpowiednio każdego drzewa.
Powiedziano mi jednak, że można to zrobić w miejscu O(h), gdzie hjest 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.