Come è possibile convertire albero binario a binario Ricerca Albero con O (1) spazio extra?
albero binario a binario Ricerca Albero (BST)
Conversione di un albero binario non ordinato in un albero binario di ricerca ordinata è banale, ma un po 'più difficile da fare in fretta.
Ecco un'implementazione ingenuo che dovrebbe soddisfare i criteri di, non voglio descrivere i passaggi effettivi per prendere, solo l'algoritmo complesso.
- Afferra un nodo foglia caso dalla tua albero esistente
- Scollegare il nodo foglia dal vostro albero esistente
- Fare il nodo radice del nuovo albero binario di ricerca
- Prendere un altro nodo foglia caso dalla tua albero esistente
- Scollegare il nodo dal vostro albero esistente
- Trovare il posto giusto per, e collegare il nodo, nel nuovo albero binario di ricerca
- Ripetere il passaggio 4-6 fino a quando l'albero originale è vuota
Si dovrebbe richiedere solo pochi variabili, come il genitore del nodo foglia che stai scollegamento (a meno che i nodi ha genitori-link), il nodo principale del nuovo albero, e un paio di variabili temporanee, il tutto all'interno del vostro O (1 ) criteri di spazio.
Questo non produrrà un ottimale albero binario di ricerca. Per questo è necessario o ordinare i nodi prima di aggiungere di loro, e aggiungendoli nel giusto ordine, o utilizzare un albero binario di ricerca di bilanciamento, come un albero rosso-nero o un albero splay.
Convertire albero binario a una lista- doppiamente legato può essere fatto inplace in O (n) quindi ordinare utilizzando merge sort, nlogn convertire l'elenco di nuovo ad un albero - O (n)
soluzione nlogn semplice.













