Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych Autor artykułu: mgr Jerzy Wałaszek |
©2014 mgr
Jerzy Wałaszek
|
Drzewo binarneDotychczas operowaliśmy na prostych strukturach danych, takich jak
tablice. W tablicy elementy ułożone są zgodnie z ich
numeracją, czyli indeksami. Jeśli za punkt odniesienia
weźmiemy element
Pierwszy element Drzewo binarne jest hierarchiczną strukturą danych,
którego elementy będziemy nazywali węzłami Węzły są połączone krawędziami symbolizującymi następstwo kolejnych elementów w strukturze drzewa binarnego. Według rysunku po prawej stronie węzeł A posiada dwa węzły potomne: B i C. Węzeł B nosi nazwę lewego potomka (ang. left child node), a węzeł C nosi nazwę prawego potomka (ang. right child node). Z kolei węzeł B posiada węzły potomne
D i E, a węzeł C
ma węzły potomne F i G. Jeśli dany
węzeł nie posiada dalszych węzłów potomnych, to jest w strukturze drzewa
binarnego
węzłem terminalnym. Taki węzeł nosi nazwę
liścia Rodzicem, przodkiem (ang. parent node) lub węzłem nadrzędnym będziemy nazywać węzeł leżący na wyższym poziomie hierarchii drzewa binarnego. Dla węzłów B I C węzłem nadrzędnym jest węzeł A. Podobnie dla węzłów D i E węzłem nadrzędnym będzie węzeł B, a dla F i G będzie to węzeł C. Węzeł nie posiadający rodzica nazywamy korzeniem
drzewa binarnego
Odwzorowanie drzewa binarnegoJeśli chcemy przetwarzać za pomocą komputera struktury drzew binarnych, to musimy zastanowić się nad sposobem reprezentacji takich struktur w pamięci. Najprostszym rozwiązaniem jest zastosowanie zwykłej tablicy n elementowej. Każdy element tej tablicy będzie reprezentował jeden węzeł drzewa binarnego. Pozostaje nam jedynie określenie związku pomiędzy indeksami elementów w tablicy a położeniem tych elementów w strukturze drzewa binarnego. Zastosujmy następujące odwzorowanie:
Otrzymamy w ten sposób następujące odwzorowanie elementów tablicy w drzewo binarne:
Dla węzła k-tego wyprowadzamy następujące wzory:
Sprawdź, iż podane wzory są również spełnione w drzewach binarnych o większych rozmiarach niż prezentuje nasz przykład (pomocna może być kartka papieru).
Przykład: Skonstruować drzewo binarne z elementów zbioru {7 5 9 2 4 6 1}
Zrównoważone drzewa binarneUmówmy się na potrzeby tego artykułu, iż binarne drzewo jest zrównoważone i uporządkowane, jeśli na wszystkich poziomach za wyjątkiem ostatniego posiada maksymalną liczbę węzłów, a na poziomie ostatnim węzły są ułożone kolejno od lewej strony. Innymi słowy, jeśli ostatni węzeł drzewa binarnego posiada numer i-ty, to drzewo zawiera wszystkie węzły od numeru 1 do i. Warunek ten gwarantuje nam, iż każdy element tablicy będzie reprezentował pewien węzeł w drzewie binarnym - czyli w tej strukturze nie wystąpią dziury.
Drzewo po lewej stronie nie posiada węzła Drzewo po prawej stronie nie posiada węzła W uporządkowanych i zrównoważonych drzewach binarnych bardzo prosto można
sprawdzić, czy k-ty węzeł jest liściem. Będzie tak, jeśli
węzeł ten nie posiada węzłów potomnych. Zatem, jeśli drzewo binarne składa się z
n węzłów, to wystarczy sprawdzić, czy
Ścieżki na drzewach binarnychŚcieżką nazwiemy ciąg węzłów drzewa binarnego
spełniających warunek, iż każdy węzeł poprzedni jest rodzicem węzła następnego.
Jeśli ścieżka składa się z k węzłów, to długością ścieżki
jest liczba
Na powyższym rysunku zaznaczona została ścieżka biegnąca poprzez węzły Wysokością drzewa binarnego nazwiemy długość najdłuższej ścieżki od korzenia do liścia. W powyższym przykładzie najdłuższa taka ścieżka ma długość 3, zatem zaprezentowane drzewo binarne ma wysokość równą 3. Dla n węzłów zrównoważone drzewo binarne ma wysokość równą:
h = [log2n]
Podsumowanie nowej terminologii
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
KopiecKopiec jest drzewem binarnym, w którym wszystkie węzły spełniają następujący warunek (zwany warunkiem kopca):
Węzeł nadrzędny jest większy lub równy węzłom potomnym (w porządku malejącym relacja jest odwrotna - mniejszy lub równy).
Konstrukcja kopca jest nieco bardziej skomplikowana od konstrukcji drzewa binarnego, ponieważ musimy dodatkowo troszczyć się o zachowanie warunku kopca. Zatem po każdym dołączeniu do kopca nowego węzła, sprawdzamy odpowiednie warunki i ewentualnie dokonujemy wymian węzłów na ścieżce wiodącej od dodanego węzła do korzenia.
Przykład: Skonstruować kopiec z elementów zbioru {7 5 9 6 7 8 10}
Charakterystyczną cechą kopca jest to, iż korzeń zawsze jest największym (w porządku malejącym najmniejszym) elementem z całego drzewa binarnego.
AlgorytmPoniżej przedstawiamy algorytm konstrukcji kopca z elementów zbioru.
Specyfikacja problemuDane wejściowe
Dane wyjściowe
Zmienne pomocnicze
Lista kroków
Uwaga: przy porządku malejącym należy zmienić drugi warunek w kroku K04 z d[k] < x na d[k] > x. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rozbiór kopcaAlgorytmW tym rozdziale nauczymy się rozbierać kopiec. Zasada jest następująca:
Przykład: Dokonaj rozbioru następującego kopca:
Operację rozbioru kopca można przeprowadzić w miejscu. Jeśli mamy
zbiór
Specyfikacja problemuDane wejściowe
Dane wyjściowe
Zmienne pomocnicze
Lista kroków
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sortowanie przez kopcowanieAlgorytmJeśli przeczytałeś uważnie poprzednie dwa rozdziały, to zasadę sortowania przez kopcowanie zrozumiesz od razu - w zbiorze tworzymy kopiec, a następnie dokonujemy jego rozbioru. W wyniku wykonania tych dwóch operacji zbiór zostanie posortowany.
Specyfikacja problemuDane wejściowe
Dane wyjściowe
Zmienne pomocnicze i funkcje
Lista kroków
Ponieważ sortowanie przez kopcowanie składa się z dwóch następujących
bezpośrednio po sobie operacji o klasie czasowej złożoności obliczeniowej
|
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe