O (n1 * log (n2)) biz 2 birleştirme bir BST herhangi sıralanmamış liste olsa bile ortalama senaryodur. Biz liste sıralı liste veya BST olduğu gerçeğini kullanarak verilmez.
bir BST varsaymak bana Lets göre n1 öğesi vardır ve diğer n2 elemanları vardır. Şimdi O (n1) bir sıralama Array List L1 içine bir BST'yi dönüştürün.
Birleştirilmiş BST (BST, Dizisi)
(Array.size == 0) dönüş TSİ halinde (Array.size == 1) eğer BST elemanını yerleştirin. BST döndürür;
Sol eleman <BST.rootnode ve sağ eleman> = BST.rootnode Index demek dizideki endeksi bulun. if (BST.rootNode.leftNode == null) // yani hiçbir sol düğüm else {BST sol ve içine 0'a Index tüm dizi ekleyin} {Birleştirilmiş BST (BST.leftNode, Array {0} Endeksine)}
(BST.rootNode.rightNode == null) // yani hiçbir hak düğüm else {BST sağında içine Array.size için Index gelen tüm dizi ekleyin} eğer {BST Birleştirilmiş (BST.rightNode, Array {Endeksi Array.size için} )}
BST'yi dönün.
Bu algoritma, her zaman biz subproblem işlemek için diziyi ve BST bölünmesine gibi O (n1 * log (n2)) daha << zaman alacaktır.