Mam trudności z zrozumieniem, jak budowane są drzewa wyszukiwania binarnego. Czy wymagają one posortowania początkowych danych w celu znalezienia najlepszego root'a?Zrozumienie budowy drzewa wyszukiwania binarnego
Odpowiedz
kształt, że wyszukiwanie binarne drzewo trwa zależy od dwóch rzeczy:
- kolejności, w której elementy są wstawiane i
- saldo operacji Co, jeśli w ogóle, drzewo czy podczas wkładania.
Jeśli masz czyste drzewo wyszukiwania binarnego bez żadnej logiki przywrócenia równowagi, kolejność włożenia elementów będzie miała duży wpływ na kształt drzewa. Na przykład, przyjmuj wartości 1, 2, 3, 4, 5, 6, 7. Jeśli wstawisz je w kolejności 4, 2, 6, 1, 3, 5, 7, otrzymasz to drzewo:
4
/ \
2 6
/\ /\
1 3 5 7
powodem tego jest to, że możemy przejść do serii drzew:
4
4
/
2
4
/ \
2 6
4
/ \
2 6
/
1
4
/ \
2 6
/\
1 3
4
/ \
2 6
/\ /
1 3 5
4
/ \
2 6
/\ /\
1 3 5 7
z drugiej strony, jeśli wstawić wartości w kolejności 1, 2, 3, 4, 5, 6 , 7, otrzymujesz to drzewo:
1
\
2
\
3
\
4
\
5
\
6
\
7
Co ciekawe, wstawianie elementów do BST w posortowanej kolejności jest o ne z najgorsze rzeczy, które można zrobić dla drzewa, ponieważ sprawia, że drzewo jest liniową strukturę. Jesteś lepiej zbieranie losowych permutacji elementów wstawić, lub (jeśli są wszystkie znane wcześniej) ich sortowania i stosując następujący algorytm rekurencyjny na sortowanej kolejności:
- Jeśli nie ma żadnych elementów, gotowe.
- W przeciwnym razie:
- Wstaw medianę do BST.
- Rekurencyjnie wstaw pierwszą połówkę elementów do BST.
- Rekurencyjnie wstaw drugą połówkę elementów do BST.
Nadzieja to pomaga!
- 1. Dlaczego drzewa wyszukiwania binarnego?
- 2. Destruktor drzewa wyszukiwania binarnego
- 3. Wdrażanie zrównoważonego drzewa wyszukiwania binarnego?
- 4. Budowanie zrównoważonego drzewa wyszukiwania binarnego
- 5. drzewa wyszukiwania binarnego w rubinach
- 6. Usuń rekursywnie z drzewa wyszukiwania binarnego
- 7. Włóż posortowaną tablicę do drzewa wyszukiwania binarnego
- 8. Algorytm wstawiania drzewa binarnego
- 9. Implementacja drzewa binarnego drzewa javascript
- 10. Czy istnieje implementacja drzewa wyszukiwania binarnego w .NET 4?
- 11. Jak zrobić drzewo wyszukiwania binarnego w Clojure?
- 12. instancji Monada do binarnego drzewa
- 13. Aby wydrukować granicę drzewa binarnego
- 14. Strategia wyszukiwania duplikatów w drzewie wyszukiwania binarnego
- 15. Centrum wyszukiwania drzewa
- 16. Rekurencyjne drzewo wyszukiwania binarnego x = zmień (x)
- 17. biblioteki javascript do budowy drzewa węzła hierarchii
- 18. Drzewo wyszukiwania binarnego w C
- 19. Znajdź medianę w drzewie wyszukiwania binarnego
- 20. Drukowanie poziomu poziomu Binarne formatowanie drzewa wyszukiwania
- 21. W zamówienie iterator do binarnego drzewa
- 22. C++: Suma wartości wszystkich węzłów drzewa binarnego
- 23. Implementacja drzewa binarnego przy użyciu Swift enum
- 24. Liczba drzew wyszukiwania binarnego nad n odrębnymi elementami
- 25. Złożoność czasowa wyszukiwania binarnego dla nieposortowanej tablicy
- 26. Czy in_array() używa binarnego algorytmu wyszukiwania?
- 27. Funkcja porównawcza wewnątrz wyszukiwania binarnego w C++
- 28. Implementacja drzewa B w drzewie wyszukiwania
- 29. Utwórz zbalansowane drzewo wyszukiwania binarnego ze strumienia liczb całkowitych
- 30. Sugerowane algorytmy wyszukiwania równoległego drzewa równoległego?
"Wstaw medianę do BST." Tak więc, aby uzyskać wartość średnią, najpierw musiałbym mieć dane liniowe, więc podobnie jak 5,3,6,2,4,1 musiałby zostać zmieniony na 1,2,3,4,5 , 6, a następnie 4 będzie rootem? –
@ GeorgeL- Nie jestem pewien, czy rozumiem twój komentarz. Możesz wyjaśnić? – templatetypedef
Niestety, nie zdawałem sobie sprawy z tego, że naciśnięcie Enter powoduje przesłanie komentarza. –