albero binario a binario Ricerca Albero (BST)

voti
1

Come è possibile convertire albero binario a binario Ricerca Albero con O (1) spazio extra?

È pubblicato 17/05/2010 alle 10:56
fonte dall'utente
In altre lingue...                            


2 risposte

voti
6

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.

  1. Afferra un nodo foglia caso dalla tua albero esistente
  2. Scollegare il nodo foglia dal vostro albero esistente
  3. Fare il nodo radice del nuovo albero binario di ricerca
  4. Prendere un altro nodo foglia caso dalla tua albero esistente
  5. Scollegare il nodo dal vostro albero esistente
  6. Trovare il posto giusto per, e collegare il nodo, nel nuovo albero binario di ricerca
  7. 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.

Risposto il 17/05/2010 a 11:24
fonte dall'utente

voti
-1

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.

Risposto il 18/02/2014 a 20:52
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more