O (n1 * log (n2)) je průměrný scénář, i když máme 2 sloučení jakýkoliv netříděného seznamu na BST. Nejsme s využitím k tomu, že seznam je seřazen seznam nebo BST.
Podle mě Předpokládejme, jednu BST má n1 prvky a druhý má n2 prvků. Nyní převést jeden BST do tříděného Array Seznam L1 v O (N1).
Sloučený BST (BST, Array)
if (Array.size == 0) vratné BST, pokud (Array.size == 1) vložit prvek v BST. vrátit BST;
Vyhledá index do pole, jehož levá element <BST.rootnode a pravý element> = BST.rootnode říkat index. if (BST.rootNode.leftNode == null) // bez levé uzel {zasunout pole z indexu na 0 do levé BST a} jinak {Sloučen BST (BST.leftNode, Array {0 až Index})}
if (BST.rootNode.rightNode == null) // tj č přímo uzel {zasunout pole z indexu na Array.size do pravé BST} jinak {Sloučen BST (BST.rightNode, Array {Rejstřík Array.size} )}
vrátit BST.
Tento algoritmus bude trvat << času než O (n1 * log (N2)) jako pokaždé, když jsme se rozdělením pole a BST zvládnout podproblém.