O (n1 * log (n2)) è lo scenario medio caso, anche se abbiamo 2 merge qualsiasi elenco non ordinato in un BST. Noi non stiamo utilizzando il fatto che la lista è lista ordinata o un BST.
Secondo me Consente di assumere un BST presenta elementi n1 e n2 altro ha elementi. Ora convertire un BST in un array ordinato elenco L1 a O (n1).
BST fusa (BST, Array)
if (Array.size == 0) return BST se (Array.size == 1) inserire l'elemento nel BST. tornare BST;
Trova l'indice nella matrice cui elemento sinistra <BST.rootnode ed elemento di destra> = BST.rootnode dicono Index. if (BST.rootNode.leftNode == null) // cioè n nodo fianco {inserire tutta la matrice da Index a 0 nella sinistra della BST e} else {BST Fusione (BST.leftNode, Array {0 all'indice})}
if (BST.rootNode.rightNode == null) // cioè n nodo destra {inserire tutta la matrice da indice per Array.size in destra di BST} else {Fusione BST (BST.rightNode, Array {N} per Array.size )}
tornare BST.
Questo algoritmo avrà << tempo di O (n1 * log (n2)) come ogni volta che ci troviamo di partizionamento della matrice e BST per gestire il sottoproblema.