O (n1 * log (n2)) ist der durchschnittliche Fall, auch wenn wir 2 merge jede unsortierte Liste in eine BST haben. Wir nutzen nicht die Tatsache, dass die Liste ist sortierte Liste oder ein BST.
Nach mir Nehmen wir an, ein BST hat n1 Elemente und andere n2 Elemente. Jetzt ein BST in ein sortiertes Array Liste L1 in O (n1) konvertieren.
Fusionierte BST (BST, Array)
if (Array.size == 0) return BST if (Array.size == 1) einfügen, das Element in dem BST. Rückkehr BST;
Finden Sie den Index im Array, dessen linkes Element <BST.rootnode und rechtes Element> = BST.rootnode sagen Index. if (BST.rootNode.leftNode == null) // dh keine linken Knoten {einzufügen alle Array-Index von 0 bis in eine linke und von BST} else {Fusioniert BST (BST.leftNode, Array {0} zum Index)}
if (BST.rootNode.rightNode == null) // dh keine rechten Knoten {einzufügen alle Array-Index von in rechts von BST Array.size} else {Fusioniert BST (BST.rightNode, Array {Index Array.size} )}
Rückkehr BST.
Dieser Algorithmus nimmt << Zeit als O (n1 * log (n2)) wie jedes Mal, wenn wir Partitionierung der Anordnung und BST die Subproblem zu behandeln.