Struktury danych: Drzewa
Transkrypt
Struktury danych: Drzewa
Struktury danych: Drzewa 11/23/2005 Co to jest drzewo? Struktury danych: Drzewa ! Drzewo to struktura danych, która odpowiada na przykład strukturze organizacyjnej rządu ! Co to są drzewa? Nomenklatura drzew Drzewa binarne Organizacja drzew binarnych ! ! ! Premier jest w wierzchołku Poniżej są ministrowie Jeszcze niżej są wiceministrowie i sekretarze stanu Dodatkowe ograniczanie ! ! Nikt nie podlega dwóm przełożonym Różne gałęzie nie będą się łączyć na niższym poziomie 2/12 Rząd… ©2005 R. Robert ‘RoG@j’ Gajewski Nomenklatura drzewa ! PREMIER ! Każdy element drzewa to węzeł Węzeł w wierzchołku to korzeń ! MINISTER EDUKACJI ! MINISTER PRACY ! V1-MINISTER EDUKACJI V2-MINISTER EDUKACJI ! V1-MINISTER PRACY 3/12 ©2005 R. Robert ‘RoG@j’ Gajewski 4/12 Nomenklatura rodzinna ! ! ! ! ! ©2005 R. Robert ‘RoG@j’ Gajewski Drzewa binarne Bezpośredni `potomkowie` węzła to jego dzieci Bezpośredni przodek węzła to jego rodzic Węzły o tym samym ojcu to rodzeństwo Głębokość drzewa, to liczba węzłów na najdłuższej ścieżce od korzenia do pewnego liścia ! ! ! ! Głębokość drzewa, to liczba jego poziomych warstw Drzewo binarne to takie drzewo, w którym każdy węzeł ma co najwyżej dwoje dzieci Implementacja następuje za pomocą struktury z dowiązaniami Każdy element drzewa ma trzy składowe ! ! Struktura drzewiasta jest wykorzystywana do przechowywania informacji, w których trzeba szybko odnajdywać pewne dane ! ! ! 5/12 Łatwo to sobie wyobrazić, jeśli odwrócimy rysunek drzewa Węzły znajdujące się po przeciwnych stronach to liście Jeśli węzeł wraz z węzłami pod nim tworzy strukturę drzewiastą, to jest to poddrzewo. Alternatywnym nazewnictwem dla drzew jest nazewnictwo rodzinne ©2005 R. Robert ‘RoG@j’ Gajewski (C)2005 R. Robert "RoG@j" Gajewski 6/12 Dane Wskaźnik do pierwszego dziecka Wskaźnik do drugiego dziecka Pierwsze dziecko – lewe dziecko Drugie dziecko – prawe dziecko ©2005 R. Robert ‘RoG@j’ Gajewski 1 Struktury danych: Drzewa 11/23/2005 Organizacja pojęciowa drzewa binarnego Implementacja drzewa ! ! ! ! ! ! A Trzeba znaleźć wolne bloki w pamięci, dla zapamiętania drzewa Następnie należy odpowiednio ustawić wskaźniki Węzły są liśćmi, jeśli oba wskaźniki są NIL Trzeba jeszcze zarezerwować miejsce na wskaźnik korzenia – adres węzła, znajdującego się w korzeniu drzewa 7/12 ©2005 R. Robert ‘RoG@j’ Gajewski D ©2005 R. Robert ‘RoG@j’ Gajewski ! NIL F B D NIL NIL NIL ! NIL 9/12 ! NIL ©2005 R. Robert ‘RoG@j’ Gajewski W tej koncepcji oszczędzamy na pamiętaniu wskaźników, ale pamiętamy niestety „puste” dzieci ©2005 R. Robert ‘RoG@j’ Gajewski Odśmiecanie ! ! Jeśli drzewo jest bogate, każdy rodzic ma dzieci, to jest to dobry sposób pamiętania drzewa binarnego Jeśli drzewo jest niezrównoważone przechowywanie go bez użycia wskaźników jest mało efektywne ! Proces odzyskiwania nieużywanej przestrzeni zajmowanej przez np. drzewa nosi nazwę odśmiecania Problemem jest to, czy miejsce do którego prowadzi wskaźnik można na pewno skasować czy nie ! ! ©2005 R. Robert ‘RoG@j’ Gajewski (C)2005 R. Robert "RoG@j" Gajewski 12/12 Błędna decyzja może spowodować utratę danych Z drugiej strony... ! 11/12 Dziecko lewe będzie w komórce 2n Dziecko prawe będzie w komórce 2n+1 10/12 Wada alternatywy… ! Alternatywą dla reprezentacji dowiązaniowej drzew binarnych jest technika polegająca na zarezerwowania ciągłego obszaru pamięci i zapamiętaniu adresu do korzenia Dla węzła n… ! NIL ! E F Alternatywa WSKAŹNIK KORZENIA C E 8/12 Organizacja rzeczywista drzewa binarnego A C B Mają one wskazywać lewe lub praw dziecko Jeśli nie wskazują na nic to mają wartość NIL Jeśli nie będziemy odzyskiwać pamięci dostępna przestrzeń będzie maleć – określane jest to mianem wycieku pamięci ©2005 R. Robert ‘RoG@j’ Gajewski 2