Jak można przekonwertować do binarne drzewo binarne drzewo poszukiwań z O (1) dodatkowej przestrzeni?
Binarne drzewo do binarne drzewo poszukiwań (BST)
Konwersja nieuporządkowaną drzewo binarne w uporządkowany binarne drzewo poszukiwań jest trywialne, ale nieco trudniej zrobić szybko.
Oto naiwna implementacja, które powinny spełniać te kryteria, nie będę opisywać rzeczywiste kroki do podjęcia, tylko ogólny algorytm.
- Chwycić losowy węzeł liścia z istniejącym drzewie
- Rozłączyć węzeł liścia z istniejącym drzewie
- Dokonaj węzła korzenia nowej binarne drzewo poszukiwań
- Chwycić kolejną losową węzeł liścia z istniejącym drzewie
- Odłączyć ten węzeł z istniejącego drzewa
- Znajdź odpowiednie miejsce dla, i połączyć węzeł, do nowego binarne drzewo poszukiwań
- Powtórz czynność 4-6 dopóki oryginalnego drzewa jest pusty
należy wymagać tylko kilka zmiennych, jak rodzica węzła liścia jesteś rozłączanie (chyba węzłów ma rodzic-linki), węzeł główny nowego drzewa i kilka zmiennych tymczasowych, wszystko w swoim czasie O (1 ) kryteria przestrzeni.
To nie będzie produkować optymalną binarne drzewo poszukiwań. Do tego trzeba albo posortować węzły przed dodaniem ich i dodając je w odpowiedniej kolejności, lub użyć balansowaniu binarne drzewo poszukiwań, jak drzewo czerwono-czarne lub pochylenie drzewa.
Konwersja binarne drzewo do podwójnie połączonej listy- można zrobić inplace w O (N) Następnie połączyć go za pomocą sortowania sortowania nlogn Konwersja listy z powrotem do drzewa - O (n)
Proste nlogn rozwiązanie.













