O (n1 * log (n2)) este scenariul mediu de caz, chiar dacă avem 2 îmbinare orice listă nesortat într-un BST. Noi nu utilizează faptul că lista este sortată sau un BST.
Potrivit mi Să presupunem o BST are elemente n1 și alte elemente are n2. Acum converti un BST într-o matrice Sortate Lista L1 în O (n1).
BST contopit (BST, Array)
if (Array.size == 0) întoarcere BST if (Array.size == 1) se introduce elementul în BST. întoarce BST;
Găsiți indicele în matrice a cărui element de stânga <BST.rootnode și elementul dreapta> = BST.rootnode spune Index. if (BST.rootNode.leftNode == null) // adică nu nod stânga {inserați toate matrice de la Index la 0 în stânga și BST} else {BST fuzionată (BST.leftNode, Array {0 Index})}
în cazul în care (BST.rootNode.rightNode == null) // adică un nod dreapta {inserați toate matrice de la Index la Array.size în dreapta BST} else {fuzionată BST (BST.rightNode, Array {Index Array.size} )}
întoarce BST.
Acest algoritm va dura mult timp decât << O (n1 * log (n2)), ca de fiecare dată când ne partiționare matrice și BST să se ocupe de subproblema.