Cum se poate converti binar arbore binar de căutare Arbore cu O (1) spațiu suplimentar?
arbore binar în binar de căutare Arbore (BST)
Conversia unui arbore binar neordonat într-un arbore ordonat binar de căutare este banal, dar un pic mai dificil de a face rapid.
Iată o implementare naivă că ar trebui să îndeplinească criteriile dvs., nu voi descrie etapele reale de a lua, doar algoritmul de ansamblu.
- Ia-un nod frunză aleatoriu din copac existent
- Unlink nodul frunză din copac existent
- Asigurați-nodul rădăcina noului arbore binar de căutare
- Apuca un alt nod frunză aleatoriu din copac existent
- Unlink acel nod din arborele existent
- Găsiți locul potrivit pentru, și se leagă nodul, în noul arbore binar de căutare
- Repetați pasul 4-6 până când arborele original este gol
Ar trebui să solicite doar câteva variabile, cum ar fi părintele nodului de frunze ce deconectării vor (cu excepția cazului în nodurile părinte-are legături), nodul rădăcină al noului copac, și un cuplu de variabile temporare, toate acestea în O dvs. (1 ) criterii de spațiu.
Acest lucru nu va produce un arbore binar de căutare optimă. Pentru că trebuie să fie de a sorta nodurile înainte de a le adăuga și adăugarea lor în ordinea corectă, sau de a folosi un arbore de echilibrare binar de căutare, cum ar fi un copac roșu-negru sau un copac splay.
sursa de către utilizator Lasse Vågsæther Karlsen
Conversia binar la un copac legat de două ori lista- se poate face INPLACE în O (n) Apoi, ordonați-l folosind îmbinare de sortare, nlogn Conversia lista înapoi la un copac - O (n)
Soluție nlogn simplă.













