Serwis Edukacyjny w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2023 mgr Jerzy Wałaszek |
Dotychczas 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
Jeś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:
![]() |
węzły potomne mają indeksy równe: 2k - lewy potomek 2k+1 - prawy potomek węzeł nadrzędny ma indeks równy [k / 2] (dzielenie całkowitoliczbowe) |
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}
Operacja | Opis |
![]() 7 5 9 2 4 6 1 |
Konstrukcję drzewa binarnego rozpoczynamy od korzenia, który jest pierwszym elementem zbioru, czyli liczbą 7. |
![]() 7 5 9 2 4 6 1 |
Do korzenia dołączamy dwa węzły potomne, które leżą obok w zbiorze. Są to dwa kolejne elementy, 5 i 9. |
![]() 7 5 9 2 4 6 1 |
Do lewego węzła potomnego (5) dołączamy jego węzły potomne. Są to kolejne liczby w zbiorze, czyli 2 i 4. |
![]() 7 5 9 2 4 6 1 |
Pozostaje nam dołączyć do prawego węzła ostatnie dwa elementy zbioru, czyli liczby 6 i 1. Drzewo jest kompletne. |
Umó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ż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ą:
węzeł | (ang. node) | - | element drzewa binarnego |
rodzic, węzeł nadrzędny, przodek | (ang, parent node) | - | węzeł leżący o 1 poziom wyżej w hierarchii |
dziecko, potomek, węzeł potomny | (ang. child node) | - | węzeł leżący o 1 poziom niżej w hierarchii, dla którego bieżący węzeł jest rodzicem. |
korzeń drzewa | (ang. root node) | - | pierwszy węzeł na najwyższym poziomie hierarchii, który nie posiada rodzica |
liść, węzeł terminalny | (ang. leaf node) | - | węzeł nie posiadający węzłów potomnych |
ścieżka | (ang. path) | - | droga na drzewie binarnym wiodąca poprzez poszczególne wierzchołki |
Zobacz również na: Tworzenie kopca | Rozbiór kopca | Sortowanie przez kopcowanie
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2023 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.