2013-06-19 9 views

Odpowiedz

8

kształt, że wyszukiwanie binarne drzewo trwa zależy od dwóch rzeczy:

  1. kolejności, w której elementy są wstawiane i
  2. 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

"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? –

+0

@ GeorgeL- Nie jestem pewien, czy rozumiem twój komentarz. Możesz wyjaśnić? – templatetypedef

+0

Niestety, nie zdawałem sobie sprawy z tego, że naciśnięcie Enter powoduje przesłanie komentarza. –

Powiązane problemy