ALG4
144 Rozdział 5. Struktury danych
studia dotyczące drzew można znaleźć w zasadzie w większości książek poświęconych ogólnie strukturom danych. Ponieważ jednak te ostatnie nie są celem samym w sobie (o czym bardzo często autorzy książek o algorytmice zapominają ..), to wierzę, że bardziej praktyczne podejście do tematu zostanie przez większość Czytelników zaakceptowane.
Nasze rozważania zaczniemy od najpopularniejszych i najczęściej używanych drzew binarnych, których użyteczność do rozwiązywania przeróżnych zagadnień algorytmicznych jest niezaprzeczalna.
Co to są zatem drzew a binarne? Są to struktury bardzo podobne do list jednokierunkowych, ale wzbogacone o jeszcze jeden wymiar (lub kierunek jak kto woli...).
Podstawowa komórka służąca do konstrukcji drzewa binarnego ma postać: struct wezel
int intTo; // lub dowolny inny typ danych struct wezel *lewy,*prawy;
Jak łatwo jest zauważyć, w miejsce jednego wskaźnika następny (jak w liście jednokierunkowej) mamy do czynienia z dw'oma wskaźnikami o nazwach lewy i prawy, będącymi wskaźnikami do lewej i prawej gałęzi drzewa binarnego. Aby dobrze zrozumieć sposób działania i użyteczność drzew binarnych, popatrzmy na rysunek 5 - 22.
2
operator='0' =>
znaczenie ma polecał
Konwencjo:
char operator;
float val;
wezeł *lewy, *prawy;
struct węzeł
operator*'etc. => pole val jest bez znaczeni?
Rys. 5 - 22.
Drzewa binarne i wyrażenia arytmetyczne.
{(2+3)+(7*9)}*12.5
Pokazuje on jeden z możliwych przykładów' zastosowania drzew binarnych, a mianowicie reprezentowanie wyrażeń arytmetycznych. Do tego przykładu jeszcze powrócimy w dalszych paragrafach, na razie wystarczy ogólny opis
Wyszukiwarka
Podobne podstrony:
ALG 4 94 Rozdział 5. Struktury danych5.1. Listy jednokierunkowe Lista jednokierunkowa jest oszczędnąALG4 104 Rozdział 5, Struktury danych dla danego obiektu wykonanie na sobie operacji „dekrementacjiALG4 114 Rozdział 5. Struktury danych stan—ZAKOŃCZ; else { przcd=po; po=po->nastepny; I RóżnicaALG4 124 Rozdział 5. Struktury danych Co jednak z dołączaniem elementów do listy? Poniżej są omówioALG4 154 Rozdział 5. Struktury danych weźmy pod uwagę następującą grupę słów: KROKUS, KROSNO, KRAWIALG 6 96 Rozdział 5. Struktury danych Rys. 5 - 3. FCOOh FCI4h FFEEh Przykład listy jedno-kierunkALG 8 98 Rozdział 5. Struktury danych W następnych paragrafach zostaną przedstawione wszystkie metodALG2 102___Rozdział 5. Struktury danych I ELEMENT *q=inf.głowa; if (pusta()) cout << "(lALG8 108__Rozdział 5. Struktury danych5.1.3.Listy jednokierunkowe - teoria i rzeczywistość Oprócz pALG0 110 Rozdział 5. Struktury danych Rysunek 5-9 zawiera już kilka nowości w porównaniu z tym, coALG2 112 Rozdział 5. Struktury danych 112 Rozdział 5. Struktury danych //rekord informacyjny listyALG6 116 Rozdział 5. Struktury danych Iisla2.li int alfabetycznie(ELEMENT *q],ELEMENT *q2) { II czyALG8 118 Rozdział 5. Struktury danych if(pŁzed==NULL) // wstawiamy na początek listy ( inf_ptr[nr].ALG0 120 Rozdział 5. Struktury danych i if (pos!=q) rsturn(O); II element nieAlg0 120 Rozdział 5. Struktury danych i if (pos!=q) rsturn(O); II element nieALG2 122 Rozdział 5. Struktury danych Czerniak zarabia 3000zl Wynik usunięcia rekordu pracownika zaALG6 126 Rozdział 5. Struktury danych Rys. 5 - 12. Metoda„ tablic równoległych " (2) DANE L2ALG0 130 Rozdział 5. Struktury danych Symboliczny stos znajdujący się pod każdą z sześciu grup instALG4 134 Rozdział 5. Struktury danyct Jak to zwykle bywa, możliwych implementacji kolejek jest co nwięcej podobnych podstron