Je cherche un algorithme pour fusionner deux arbres de recherche binaires de taille et de plage arbitraires. La manière évidente de procéder pour l'implémenter serait de trouver des sous-arbres entiers dont la plage peut s'insérer dans un nœud externe arbitraire dans l'autre arbre. Cependant, le pire temps d'exécution pour ce type d'algorithme semble être de l'ordre de l' O(n+m)
endroit n
et de m
la taille de chaque arbre respectivement.
Cependant, on m'a dit que cela pourrait être fait à O(h)
, où h
est la hauteur de l'arbre avec la plus grande hauteur. Et je suis complètement perdu sur la façon dont cela est possible. J'ai d'abord essayé d'expérimenter la rotation d'un arbre, mais la rotation d'un arbre en colonne vertébrale est déjà O (h).
O(log n)
avec une simple fonction de déplacement de nœud?
n
. Seuls les arbres binaires complets ou complets ont une hauteur logarithmique par rapport à leur nombre total de nœuds.