O (n1 * log (n 2)) είναι το μέσο σενάριο, ακόμη και αν έχουμε 2 συγχώνευσης οποιαδήποτε μη ταξινομημένα λίστα σε ένα BST. Εμείς δεν χρησιμοποιούν το γεγονός ότι η λίστα είναι ταξινομημένη λίστα ή ένα BST.
Κατά τη γνώμη μου Ας υποθέσουμε ένα BST έχει n1 στοιχεία και άλλα έχει n2 στοιχεία. Τώρα μετατρέψτε ένα BST σε ένα ταξινομημένο πίνακα Λίστα L1 σε O (n1).
Συγχωνεύεται BST (BST, Array)
εάν (Array.size == 0) επιστροφής BST εάν (Array.size == 1) τοποθετήστε το στοιχείο της BST. επιστρέψει BST?
Βρείτε το δείκτη του πίνακα με το αριστερό στοιχείο <BST.rootnode και δεξιά στοιχείο> = BST.rootnode λένε Index. εάν (BST.rootNode.leftNode == null) // δηλαδή αριθ αριστερή κόμβο {εισαγάγετε όλη τη συστοιχία από Index έως 0 σε αριστερό του BST και} αλλού {Συγχωνεύεται BST (BST.leftNode, Array {0 έως Index})}
εάν (BST.rootNode.rightNode == null) // δηλαδή αριθ δεξιά κόμβος {εισαγάγετε όλη τη συστοιχία από Index να Array.size σε δεξιά της BST} else {Συγχωνεύεται BST (BST.rightNode, Array {Index να Array.size} )}
επιστρέψει BST.
Ο αλγόριθμος αυτός θα πάρει << χρόνο από O (n1 * log (n 2)), όπως κάθε φορά που κατακερματισμό της συστοιχίας και BST για να χειριστεί το υποπρόβλημα.