O (n1 * log (n2)) - сценарий среднего случая, даже если у нас есть 2 объединить любой несортированный список в BST. Мы не используем тот факт, что список является отсортированным списком или BST.
По мне
Предположим, что один BST имеет n1 элементов, а другой имеет n2 элементов.
Теперь преобразуйте один BST в список отсортированных массивов L1 в O (n1).
Объединенный BST (BST, Array)
if (Array.size == 0) вернуть BST
if (Array.size == 1)
вставьте элемент в BST. возврат BST;
Найдите индекс в массиве, у которого левый элемент = BST.rootnode говорят Index.
if (BST.rootNode.leftNode == null) //i.e Нет левого узла
{
вставьте весь массив от индекса до 0 слева от BST и
}
еще
{
Объединенный BST (BST.leftNode, Array {0 to Index})
}
if (BST.rootNode.rightNode == null) // т.е. нет правого узла
{
вставьте весь массив от Index до Array.size справа от BST
}
еще
{
Объединенный BST (BST.rightNode, Array {Index to Array.size})
}
возврат BST.
Этот алгоритм потребует << времени, чем O (n1 * log (n2)), так как каждый раз, когда мы разделяем массив и BST для обработки подзадачи. </p>