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