• Nie Znaleziono Wyników

Rozdzial 08 - Stosy kolejki i drzewa

N/A
N/A
Protected

Academic year: 2021

Share "Rozdzial 08 - Stosy kolejki i drzewa"

Copied!
16
0
0

Pełen tekst

(1)Matematyka Dyskretna Andrzej Szepietowski 25 czerwca 2002 roku.

(2)

(3) Rozdział 1. Struktury danych 1.1 Listy, stosy i kolejki Lista to uporz¸adkowany ci¸ag elementów. Przykładami list s¸a wektory lub tablice jednowymiarowe. W wektorach mamy dost¸ep do dowolnego elementu, poprzez podanie indeksu tego elementu. Przykład 1.1 W j¸ezyku Pascal przykładem typu tablicy jednowymiarowej jest array[1..N] of integer. Je˙zeli mamy zmienn¸a tego typu a:array[1..N] of integer, to tablica a zawiera N elementów a[1], a[2], ... ,a[N]. W programie mo˙zemy odwoływa´c si¸e do całej tablicy, na przykład w instrukcji przypisania a:=b, lub do pojedynczych elementów: a[i]:=a[i+1]. Mo˙zemy tak˙ze u˙zywa´c tablic dwu lub wi¸ecej wymiarowych. Przykładem tablicy dwuwymiarowej jest typ array[1..N,1..M] of real. Zmienna. c:array[1..N,1..M] of real    zawiera elementów. Dla ka˙zdej pary liczb   spełniaj¸acej warunki

(4)  c[i,j] zawiera liczb¸e typu real..    , element. ,. Czasami wygodniej posługiwa´c si¸e listami bez u˙zywania indeksów. Przykładami list, których mo˙zna u˙zywa´c bez konieczno´sci odwoływania si¸e do indeksów poszczególnych elementów, s¸a kolejki i stosy. 3.

(5) 4. Rozdział 1. Struktury danych. Definicja 1.2 Kolejka jest list¸a z trzema operacjami: dodawania nowego elementu na koniec kolejki, zdejmowania pierwszego elementu z pocz¸atku kolejki, sprawdzania, czy kolejka jest pusta. Taki sposób dodawania i odejmowania elementów jest okre´slany angielskim skrótem FIFO (first in first out, czyli pierwszy wszedł — pierwszy wyjdzie). Przykłady kolejek spotykamy w sklepach, gdzie klienci czekaj¸acy na obsłu˙zenie tworz¸a kolejki. Definicja 1.3 Stos jest list¸a z trzema operacjami: dodawania elementu na wierzch stosu, zdejmowania elementu z wierzchu stosu, sprawdzania, czy stos jest pusty. Na stosie dodajemy i odejmujemy elementy z tego samego ko n´ ca, podobnie jak w stosie talerzy spi¸etrzonym na stole. Talerze dokładane s¸a na wierzch stosu i zdejmowane z wierzchu stosu. Taka organizacja obsługi listy okre´slana jest angielskim skrótem LIFO (last in first out, czyli ostatni wszedł – pierwszy wyjdzie). Niektórzy w ten sposób organizuj¸a prac¸e na biurku. Przychodz¸ace listy układaj¸a na stosie i jak maj¸a czas, to zdejmuj¸a jeden list i odpowiadaj¸a na niego. Przyjrzyjmy si¸e zastosowaniu kolejki lub stosu do szukania. Przypu´sc´ my, z˙ e szukamy przez telefon pewnej informacji (na przykład chcieliby´smy si¸e dowiedzie´c, kto z naszych znajomych ma pewn¸a ksi¸az˙ k¸e). Algorytm szukania ksi¸az˙ ki w´sród znajomych tworzymy STOS, który na pocz¸atku jest pusty, wkładamy na STOS numer telefonu swojego znajomego, powtarzamy dopóki na stosie s¸a jakie´s numery: zdejmujemy z wierzchu STOSU jeden numer telefonu, . dzwonimy pod ten numer, . je˙zeli osoba, do której si¸e dodzwonili´smy, posiada szukan¸a ksi¸az˙ k¸e, to koniec poszukiwa´n, . je˙zeli nie posiada ksi¸az˙ ki, to pytamy j¸a o numery telefonów jej znajomych, którzy mog¸a mie´c ksi¸az˙ k¸e (lub zna´c kogo´s kto j¸a ma); ka˙zdy nowy numer zostaje dopisany do STOSU. . W powy˙zszym algorytmie zamiast stosu mo˙ze by´c u˙zyta kolejka..

(6) 1.2. Drzewa binarne. 5. 1.2 Drzewa binarne Drzewo jest hierarchiczn¸a struktur¸a danych. Jeden element drzewa, zwany korzeniem, jest wyró˙zniony. Inne elementy drzewa s¸a jego potomstwem lub potomstwem jego potomstwa itd. Terminologia u˙zywana do opisu drzew jest mieszanin¸a terminów z teorii grafów, botaniki i stosunków rodzinnych. Elementy drzewa nazywa si¸e wierzchołkami lub w¸ezłami. Li´scie to wierzchołki nie maj¸ace potomstwa. Drzewa cz¸esto przedstawia si¸e w formie grafu, gdzie ka˙zdy wierzchołek jest poł¸aczony kraw¸edzi¸a ze swoim ojcem i ze swoimi dzie´cmi (swoim potomstwem). Dla ka˙zdego elementu w drzewie istnieje dokładnie jedna s´cie˙zka prowadz¸aca od korzenia do tego wierzchołka. Drzewa binarne to takie drzewa, w których ka˙zdy wierzchołek ma co najwy˙zej dwóch synów. Do oznaczania wierzchołków w drzewie binarnym wygodnie jest u˙zywa c´ ci¸agów  oznacza zbiór wszystkich skon´ czonych ci¸agów zer i jedyzer i jedynek. Niech nek. Zbiór ten zawiera ci¸ag pusty (długo´sci 0), oznaczany przez  . Wierzchołki drzewa oznaczamy w nast¸epuj¸acy sposób:. . korze´n drzewa oznaczamy przez  — pusty ci¸ag,. je˙  zeli jaki´s wierzchołek jest oznaczony przez  , to jego synowie oznaczeni s¸a przez  i .. Rysunek 1.1: Przykład drzewa binarnego . . . . . . Przy takim oznaczeniu wierzchołków drzewa binarnego nazwa wierzchołka  mówi nam, jaka s´cie˙z ka prowadzi od korzenia do  . Na przykład, aby doj´sc´ od korzenia do wierzchołka nalezy: pój´sc´ w prawo do , potem znowu w prawo do , a na kon´ cu w lewo do ..

(7) 6. Rozdział 1. Struktury danych. Je˙zeli mamy drzewo binarne , to z ka˙zdym wierzchołkiem  mo˙zemy skojarzy´c poddrzewo  zło˙zone z wierzchołka  i wszystkich jego potomków. Na przykład w drzewie przedstawionym na rysunku 1.1 wierzchołek  wyznacza poddrzewo  przedstawione na rysunku 1.2.. Rysunek 1.2: Poddrzewo . . . Mówimy te˙z, z˙ e drzewo  składa si¸e z korzenia (wierzchołka  ), z lewego poddrzewa  i z prawego poddrzewa   . Wysoko´sci¸a drzewa nazywamy długo´sc´ (liczb˛e kraw˛edzi) najdłu˙zszej s´cie˙zki w drzewie prowadz¸acej od korzenia do li´scia. Na przykład drzewo z rysunku 1.1 jest wysoko´sci 3.. 1.3 Drzewa wyra˙zen´ arytmetycznych Przykładem zastosowania drzew binarnych s¸a drzewa wyra˙ze n´ arytmetycznych. Najpierw przykład. Na rysunku 1.3 przedstawiono drzewo wyra˙zenia

(8)   . W drzewie tym ka˙zdy wierzchołek ma etykiet¸e. Li´scie etykietowane s¸a stałymi albo zmiennymi. Wierzchołki nie b¸ed¸ace li´sc´ mi etykietowane s¸a operacjami arytmetyczymi. Ka˙zdemu wierzchołkowi w drzewie mo˙zemy przypisa´c wyra˙zenie arytmetyczne według nast¸epuj¸acej zasady: dla li´sci wyra˙zeniami s¸a etykiety tych li´sci (stałe lub zmienne), je˙zeli wierzchołek wyra˙zenia  ma etykiet¸e  , a jego synom przypisano        , to wierzchołkowi  przypisujemy wyra˙zenie       . . !i.. . . Przykład 1.4 W drzewie z rysunku1.3 wierzchołkowi z etykieta˛ odpowiada wyra˙zenie

(9) , wierzchołkowi z etykieta˛  wyra˙zenie " , a korzeniowi wyra˙zenie. #

(10).   $%" !'&. Wyra˙zenie to zawiera wi¸ecej nawiasów, ni˙z to si¸e zwykle stosuje. Normalnie to samo wyra˙zenie przedstawiamy bez nawiasów w postaci

(11)  () ..

(12) 1.3. Drzewa wyra˙ze´n arytmetycznych. Rysunek 1.3: Drzewo wyra˙zenia

(13) . 7. ). . 

(14). . . . Opuszczenie nawiasów mo˙ze prowadzi´c do niejednoznaczno´sci lub mo˙ze zmieni´c sens wyra˙zenia. Na przykład wyra˙zenie.

(15) %   . . po opuszczeniu nawiasów stanie si¸e identyczne z wyra˙zeniem

(16) " $" i zmieni sens. Drzewo, które odpowiada wyra˙zeniu

(17) %    , przedstawiono na rysunku 1.4. Rysunek 1.4: Drzewo wyra˙zenia

(18). .

(19).  (). . . . . . Drzewo wyra˙zenia arytmetycznego oddaje logiczn¸a struktur¸e i sposób obliczania tego wyra˙zenia..

(20) 8. Rozdział 1. Struktury danych. Istnieje sposób przedstawiania wyra˙zen´ arytmetycznych nie wymagaj¸acy nawiasów. Jest to tak zwana notacja polska lub Łukasiewicza. Jest ona te˙z nazywana notacj¸a postfixow¸a, poniewa˙z znak operacji stoi na kon´ cu wyra˙zenia, za argumentami, czyli wyra˙zenie w notacji postfixowej ma posta´c: pierwszy argument — drugi argument — operacja. Notacja, do jakiej jeste´smy przyzwyczajeni, nazywa si¸e infixowa, poniewa˙z operacja znajduje si¸e pomi¸edzy argumentami, czyli wyra˙zenie w notacji infixowej ma posta´c: pierwszy argument — operacja — drugi argument. Przykład 1.5 Wyra˙zenie w postaci postfixowej. .

(21) !  ma w postaci infixowej posta´c. .

(22)  .    !  . a wyra˙zenie.

(23) . jest postfixow¸a postaci¸a wyra˙zenia.

(24)  (). &. W wyra˙zeniach w postaci postfixowej nie potrzeba nawiasów. Warto´sc´ wyra˙zenia mo˙zna w sposób jednoznaczny odtworzy´c z samego wyra˙zenia za pomoc¸a nast˛epujacego ˛ algorytmu.: Algorytm obliczania warto´sci wyra˙zenia w postaci postfixowej. Dla kolejnych elementów zapisu wyra˙zenia: je˙zeli element jest stał¸a lub zmienn¸a, to wkładamy jego warto´sc´ na stos, je˙zeli element jest znakiem operacji, to: zdejmujemy dwie warto´sci z wierzchu stosu, . wykonujemy operacj¸e na tych warto´sciach, . . obliczon¸a warto´sc´ wkładamy na wierzch stosu,. po przej´sciu całego wyra˙zenia jego warto´sc´ znajduje si¸e na stosie..   ". Przykład 1.6 Zademonstrujmy ten algorytm na przykładzie wyra˙zenia:. . . . . . Załó˙zmy, z˙e zmienne maj¸a nast¸epuj¸ace warto´sci:   , 

(25) ,  ,   ,  

(26) . Poni˙zsza tabela przedstawia zawarto´sc´ stosu po przeczytaniu kolejnych elementów wyraz˙enia..

(27) 1.4. Przeszukiwanie drzew binarnych czytany element a b c. . . d e. . . 9. stos 3, 3, 2, 3, 2, 1, 3, 3, 9, 9, 4, 9, 4, 2, 9, 2, 11.. 1.4 Przeszukiwanie drzew binarnych Zajmiemy si¸e teraz dwoma algorytmami przeszukiwania drzew (binarnych): przeszukiwanie w gł¸ab i wszerz. Ró˙zni¸a si¸e one rodzajem u˙zytych struktur danych. W algorytmie przeszukiwania w gł¸ab u˙zyjemy stosu, a w algorytmie przeszukiwania wszerz u˙zyjemy kolejki.. 1.4.1 Przeszukiwanie drzewa w głab ˛ Algorytm przeszukiwania drzewa w gł¸ab. Dane wej´sciowe: drzewo . odwiedzamy korze´n  i wkładamy go na STOS; zaznaczamy  jako wierzchołek odwiedzony, dopóki STOS nie jest pusty, powtarzamy: je˙zeli jest wierzchołkiem na wierzchu STOSU, to sprawdzamy, czy istnieje  syn wierzchołka , który nie był jeszcze odwiedzony, najpierw sprawdzamy , a potem . . . je˙zeli takie si¸e znajdzie, to odwiedzamy , wkładamy go na wierzch STOSU i zaznaczamy jako wierzchołek odwiedzony, . . . je˙zeli takiego nie ma, to zdejmujemy chołka b¸ed¸acego na stosie pod spodem. . . ze STOSU i cofamy si¸e do wierz-. Przykład 1.7 Poni˙zsza tabela pokazuje jaki wierzchołek jest odwiedzany i jaka jest zawarto´sc´ stosu po ka˙zdej kolejnej iteracji p¸etli algorytmu, gdy przeszukiwane jest drzewo z rysunku 1.1..

(28) 10. Rozdział 1. Struktury danych Wierzchołek. STOS. .   ,0. 0 00 0 01 0.  ,0,00  ,0. .  ,0,01  ,0   ,1. 1 10 1 11 110 11 111 11 1.  ,1,10  ,1.  ,1,11  ,1,11,110  ,1,11. .  ,1,11,111  ,1,11  ,1 . W metodzie przeszukiwania w gł¸ab po ka˙zdym kroku algorytmu wierzchołki znajduj¸ace si¸e na stosie tworz¸a s´cie˙zk¸e od wierzchołka wej´sciowego do wierzchołka aktualnie odwiedzanego. Zauwa˙zmy, z˙ e nazwa ka˙zdego wierzchołka na stosie jest prefiksem (przedrostkiem) nazwy nast¸epnego wierzchołka. Dlatego wystarczy przechowywa´c ostatnie bity wierzchołków na stosie. Nie jest te˙z konieczne zaznaczanie, które wierzchołki były ju˙z odwiedzone, wystarczy zauwa˙zy´c, z˙ e: je˙zeli przyszli´smy do wierzchołka  od jego ojca, to z˙ aden z synów  nie był jeszcze odwiedzany, je˙zeli przyszli´smy do wierzchołka  od lewego syna  odwiedzony był tylko lewy syn, je˙zeli przyszli´smy do wierzchołka  od prawego syna  odwiedzeni ju˙z byli obaj synowie.. . (po zdj¸eciu. Algorytm przeszukiwania drzewa w gł¸ab (druga wersja). Dane wej´sciowe: drzewo . odwiedzamy korze´n  i wkładamy go na STOS, dopóki STOS nie jest pusty, powtarzamy: Je˙zeli . jest aktualnie odwiedzanym wierzchołkiem i.  Je˙zeli. . Je˙zeli ostatni¸a operacj¸a na stosi było wło˙zenie nowego elementu, to:.  Je˙zeli. . . . , to przejd´z do ale. . i włó˙z 1 na stos,. i włó˙z 0 na stos,. , to przejd´z do. ze stosu), to. (po zdj¸eciu ze stosu), to. Oto prostsza wersja algorytmu przeszukiwania w gł¸ab:. . .

(29)  Je˙zeli. 1.4. Przeszukiwanie drzew binarnych . . oraz. ojca wierzchołka ..  Je˙zeli. . . 11. , to zdejmij ostatni element ze stosu i przejd´z do. i włó˙z 1 na stos,. Je˙zeli ostatni¸a operacj¸a na stosie było zdj¸ecie 0 to: . Je˙zeli chołka . . . , to przejd´z do. , to zdejmij ostatni element ze stosu i przejd´z do ojca wierz-. Je˙zeli ostatni¸a operacj¸a na stosie było zdj¸ecie 1 to: zdejmij ostatni element ze stosu i przejd´z do ojca wierzchołka .. Przykład 1.8 Poni˙zsza tabela pokazuje jaki wierzchołek jest odwiedzany i jaka jest zawarto´sc´ stosu po ka˙zdej kolejnej iteracji p¸etli drugiego algorytmu, gdy przeszukiwane jest drzewo z rysunku 1.1. Wierzchołek. STOS. .   ,0. 0 00 0 01 0 . 1 10 1 11 110 11 111 11 1 .  ,0,0  ,0  ,0,1  ,0   ,1  ,1,0  ,1.  ,1,1  ,1,1,0  ,1,1  ,1,1,1  ,1,1  ,1 . Zauwa˙zmy, z˙e etykiety na stosie zł¸aczone razem tworz¸a nazw¸e aktualnie odwiedzanego wierzchołka.. 1.4.2 Przeszukiwanie drzewa wszerz Nast¸epny algorytm przeszukiwania drzew u˙zywa kolejki jako pomocniczej struktury danych. Algorytm przeszukiwania wszerz. Dane wej´sciowe: drzewo . odwiedzamy korze´n drzewa  i wkładamy go do KOLEJKI..

(30) 12. Rozdział 1. Struktury danych dopóki KOLEJKA nie jest pusta, powtarzamy: bierzemy jeden wierzchołek z pocz¸atku KOLEJKI, . odwiedzamy wszystkiech synów wierzchołka kolejki.. i wkładamy je na koniec. . Poni˙zej przedstawiono odwiedzane wierzchołki oraz zawarto´sc´ kolejki po ka˙zdej kolejnej iteracji p¸etli algorytmu przeszukiwania wszerz drzewa przedstawionego na rysunku 1.1. wierzchołki. KOLEJKA. . . 0,1 00,01 10,11 110,111 -. 0,1 1,00,01 00,01,10,11 01,10,11 10,11 11 110,111 111 -. W metodzie przeszukiwania wszerz wierzchołki s¸a przeszukiwane w kolejno´sci od wierzchołków b¸ed¸acych najbli˙zej wierzchołka pocz¸atkowego do wierzchołków b¸ed¸acych dalej.. 1.4.3 Rekurencyjne algorytmy przeszukiwania drzew Istnieje prosty i ciekawy sposób uzyskiwania postaci postfixowej wyra˙zenia arytmetycznego z drzewa tego wyra˙zenia. Aby uzyska´c posta´c postfixow¸a wyra˙zenia, nale˙zy przeszuka´c drzewo tego wyra˙zenia w pewien okre´slony sposób, zwany przeszukiwaniem postorder. Przeszukiwanie postorder. Aby przeszuka´c (pod)drzewo maj¸ace swój korzen´ w wierzchołku  : przeszukujemy jego lewe poddrzewo (z korzeniem w  przeszukujemy jego prawe poddrzewo (z korzeniem w . . ),. ),. odwiedzamy wierzchołek  (korzen´ drzewa). Algorytm ten mo˙zemy krótko przedstawi´c w schemacie: lewe poddrzewo — prawe poddrzewo — korzen´ . Przykład 1.9 Je˙zeli przeszukamy drzewo z rysunku 1.4 i wypiszemy po kolei etykiety odwiedzanych wierzchołków, to otrzymamy ci¸ag:.

(31)     który jest postaci¸a postfixow¸a wyra˙zenia

(32). .   () ..

(33) 1.5. Drzewa poszukiwa´n binarnych. 13. Istniej¸a jeszcze dwie inne pokrewne metody przeszukiwania drzew binarnych: inorder i preorder: Przeszukiwanie inorder. Aby przeszuka´c (pod)drzewo maj¸ace swój korzen´ w wierzchołku  : . przeszukujemy jego lewe poddrzewo (z korzeniem w  odwiedzamy wierzchołek  (korzen´ drzewa),. ),. ).. przeszukujemy jego prawe poddrzewo (z korzeniem w . Przeszukiwanie preorder. Aby przeszuka´c (pod)drzewo maj¸ace swój korzen´ w wierzchołku  : odwiedzamy wierzchołek  (korzen´ drzewa), przeszukujemy jego lewe poddrzewo (z korzeniem w  przeszukujemy jego prawe poddrzewo (z korzeniem w . . ),. ).. Przykład 1.10 Je˙zeli przeszukamy drzewo z rysunku 1.4 metod¸a inorder, to etykiety utworz¸a ci¸ag:. .

(34).   . czyli wyra˙zenie w postaci infixowej, ale bez nawiasów. Przeszukanie tego samego drzewa metod¸a preorder da ci¸ag etykiet:. 

(35) ) . Jest to tak zwana posta´c prefixowa wyra˙zenia. Znak operacji wyst¸epuje w niej przed argumentami. Podobne jak w postaci postfixowej, posta´c prefixowa da si¸e jednoznacznie rozkłada´c i nie wymaga nawiasów.. 1.5 Drzewa poszukiwan´ binarnych Drzewa s¸a podstawow¸a struktur¸a przy budowie du˙zych baz danych. Jed¸a z najprostszych takich struktur s¸a drzewa poszukiwan´ binarnych. Aby utworzy´c drzewo poszukiwa´n binarnych, zaczynamy od pustego drzewa, a nast¸epnie wstawiamy po kolei elementy, które maj¸a by´c przechowywane w drzewie. Wstawiane elementy powinny by´c z jakiego´s uporz¸adkowanego zbioru. Poni˙zej przedstawiamy algorytmu wstawiania elementów do  drzewa.   oznacza warto´sc´ przechowywan¸a w wierzchołku  . Pami¸etajmy, z˙ e  oznacza poddrzewo o korzeniu w wierzchołku  . Algorytm wstawiania elementu do drzewa poszukiwan´ binarnych. Aby wstawi´c element  do drzewa  : je˙zeli drzewo  jest puste, to  . . .  (wstaw  do korzenia  ),.

(36) 14. Rozdział 1. Struktury danych. . w przeciwnym razie porównaj  z zawarto´sci¸a korzenia   : je˙zeli  . . je˙zeli .    , to wstaw  do poddrzewa  ,    , to wstaw  do poddrzewa   .. Przykład 1.11 Przypu´sc´ my, z˙e mamy ci¸ag liczb naturalnych:.

(37)     

(38)    # .

(39)   

(40) 

(41)  !    & . . . . . . . Utworzymy dla tego ci¸agu drzewo poszukiwa´n binarnych.. Rysunek 1.5: Drzewo poszukiwan´ po wstawieniu elementów: 128, 76, 106, 402.

(42)  . . . .

(43). . Po wstawieniu pierwszych czterech elementów ci¸agu otrzymamy drzewo, które jest przedstawione na rysunku 1.5, a po wstawieniu całego ci¸agu otrzymamy drzewo, które jest przedstawione na rysunku 1.6. Je˙zeli teraz przeszukamy to drzewo metod¸a inorder, to otrzymamy ten sam ci¸ag, ale uporz¸adkowany:.        .

(44) .

(45)  !    

(46) .

(47)  &.

(48)  !.  . . . . . . . Je˙zeli mamy ju˙z drzewo poszukiwan´ binarnych , to dla ka˙zdego wierzchołka  zachodzi dla ka˙zdego .  , . dla ka˙zdego .   , . . . .    ,    .. Czyli wszystkie wierzchołki w lewym poddrzewie  zawieraja˛ warto´sci mniejsze od warto´sci w  , a wszystkie wierzchołki w prawym poddrzewie   zawieraja˛ warto´sci mniejsze od warto´sci w  . Aby stwierdzi´c, czy jaki´s element  znajduje si¸e na tym drzewie. Post¸epujemy podobnie jak przy wstawianiu elementów. Zaczynamy od korzenia drzewa    i szukamy elementu  za pomoc¸a poni˙zszego algorytmu..

(49) 1.6. Zadania. 15. Rysunek 1.6: Drzewo dla ci¸agu: 128,76,106,402,100,46,354,1018,112,28, 396,35.

(50)  .  .  .

(51) . . . . .

(52).  . .

(53).  . . Algorytm szukania elementu  na drzewie  . Aby stwierdzi´c, czy element  znajduje si¸e na drzewie. :. je˙zeli  jest puste, to koniec, elementu  nie ma na drzewie,. . je˙zeli  nie jest puste, to porównujemy  z warto´sci¸a   : je˙zeli ( . je˙zeli  . . . je˙zeli .      . . , to koniec, znale´zli´smy element  na drzewie,. . .  , , to szukamy  w prawym poddrzewie  . , to szukamy  w lewym poddrzewie. W  drzewie poszukiwa´n binarnych czas wyszukiwania lub wstawiania elementu jest  , gdzie  jest wysoko´sci¸a drzewa. W obu algorytmach tylko raz przechodzimy od. korzenia w dół do li´scia. Najlepiej by było, gdyby wysoko´sc´ drzewa była rz¸edu logarytm od liczby wierzchołków, ale nie w ka˙zdym drzewie poszukiwa n´ binarnych tak musi by´c.. 1.6 Zadania 1. Ile wierzchołków mo˙ze mie´c drzewo binarne wysoko´sci  ? 2. Przeszukaj metod¸a „w gł¸ab” („wszerz”) drzewo z rysunku 1.7. 3. Narysuj drzewo dla wyra˙zenie

(54) postfixowej i prefixowej..       . . . . Przedstaw to wyra˙zenie w postaci.

(55) 16. Rozdział 1. Struktury danych. . . 4. Narysuj drzewo dla wyra˙zenie

(56)      . Przedstaw to wyra˙zenie w postaci infixowej i prefixowej. Oblicz warto´sc´ tego wyra˙zenia. Przedstaw to wyra˙zenie w postaci infixowej i prefixowej. 5. Wypisz w postaci infixowej, prefixowej i postfixowej wyra˙zenie przedstawione na rysunku 7. Rysunek 1.7: Drzewo wyra˙zenia. . .  .  . . 6. Narysuj drzewo poszukiwan´ binarnych dla nast¸epuj¸acego ci¸agu liczb: 30, 43, 13, 8, 50, 40, 20, 19, 22. 7. Narysuj drzewo poszukiwan´ binarnych dla nast¸epuj¸acego ci¸agu słów: słowik, wróbel, kos, jaskółka, kogut, dzi¸ecioł, gil, kukułka, szczygieł, sowa, kruk, czubatka. [Fragment wiersza Ptasie radio Juliana Tuwima]. kraw¸edzi. li´sciach ma  wierzchołków. 8. Udowodnij, z˙ e ka˙zde drzewo o  werzchołkach ma  9. Udowodnij, z˙ e ka˙zde pełne drzewo binarne o  wewn¸etrznych.. Wskazówka. Drzewo binarne nazywa si¸e pełne, je˙zeli ka˙zdy jego wierzchołek ma albo dwóch synów, albo nie ma synów wcale (jest li´sciem)..

(57)

Cytaty

Powiązane dokumenty

Ka˙zde zdanie jest prawdziwe lub

5 Poka», »e w przestrzeni Hausdora punkty s¡ domkni¦te, a ci¡gi zbie»ne maj¡ tylko jedn¡

Ka»de zadanie prosimy odda¢ na oddzielnej, podpisanej kartce.. Czas pracy:

W ka»dym podpunkcie w poni»szych pytaniach prosimy udzieli¢ odpowiedzi TAK lub NIE, zaznaczaj¡c j¡ na zaª¡czonym arkuszu odpowiedzi.. Ka»da kombinacja odpowiedzi TAK lub NIE w

Zbadamy teraz zbie˙zno´ s´ c szeregu w kra´ ncach otrzymanego przedzia

Tablice tego typu mog ˛ a by´c tworzone na podstawie bazy danych, proto- kołu wywiadu z ekspertem lub protokołu obserwacji danego procesu. pacjenci, jednostki czasu itp. W

Poka», »e indukowana permutacja punktów ma dokªadnie taki sam rozkªad jak w tasowaniu Rie Shue..

e)Dysk twardy – jest to element komputera mający na celu przechowywania różnych plików. Jego zaletą jest mniejsza cena i mniejsze zajmowanie przestrzeni komputera. Wadą jest