arbore binar în binar de căutare Arbore (BST)

voturi
1

Cum se poate converti binar arbore binar de căutare Arbore cu O (1) spațiu suplimentar?

Întrebat 17/05/2010 la 10:56
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
6

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.

  1. Ia-un nod frunză aleatoriu din copac existent
  2. Unlink nodul frunză din copac existent
  3. Asigurați-nodul rădăcina noului arbore binar de căutare
  4. Apuca un alt nod frunză aleatoriu din copac existent
  5. Unlink acel nod din arborele existent
  6. Găsiți locul potrivit pentru, și se leagă nodul, în noul arbore binar de căutare
  7. 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.

Publicat 17/05/2010 la 11:24
sursa de către utilizator

voturi
-1

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ă.

Publicat 18/02/2014 la 20:52
sursa de către utilizator

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