Я не спрашиваю, как объединить два бинарных дерева поиска, как этот вопрос сделал Как эффективно объединить два BST?
Я действительно спрашиваю, как объединить два дерева.Таким образом, если все узлы дерева A меньше любого узла дерева B, мы можем объединить два дерева.Но как мне сделать это эффективно?
Моя идея состоит в том, чтобы найти минимум дерева B, а затем позволить дереву A быть левым дочерним элементом минимума (дерево B).
Это достаточно просто ивремя составляет O(height of B)
.
Но, думаю, у этого решения есть некоторые проблемы:
- это может привести к тому, что окончательное большое дерево больше не будет сбалансировано
- Что еслинаихудшее время выполнения -
O(h)
, где h
- максимальная высота двух деревьев?
Собственно, книга " Руководство по разработке алгоритмов " содержит этот акциз,Достаточно ли моего простого решения для этого упражнения?
Операция сцепления берет два набора S1 и S2, где каждый ключ в S1 меньше любого ключа в S2, и объединяет их вместе. Дайте алгоритм объединения двух двоичных деревьев поиска в одно двоичное дерево поиска .Наихудшее время выполнения должно быть O (h), где h - максимальная высота двух деревьев.
Спасибо