Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

Podobne dokumenty
Matematyka dyskretna - 7.Drzewa

7a. Teoria drzew - kodowanie i dekodowanie

7. Teoria drzew - spinanie i przeszukiwanie

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew

Wykłady z Matematyki Dyskretnej

Algorytmiczna teoria grafów

Graf. Definicja marca / 1

Wysokość drzewa Głębokość węzła

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Ogólne wiadomości o grafach

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Teoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

SPÓJNOŚĆ. ,...v k. }, E={v 1. v k. i v k. ,...,v k-1. }. Wierzchołki v 1. v 2. to końce ścieżki.

TEORETYCZNE PODSTAWY INFORMATYKI

KURS MATEMATYKA DYSKRETNA

Teoretyczne podstawy informatyki

Podstawowe własności grafów. Wykład 3. Własności grafów

UNIWERSYTET GDAŃSKI MATERIAŁY DYDAKTYCZNE DO PRZEDMIOTU MATEMATYKA DYSKRETNA. pod redakcją: Hanna Furmańczyk Karol Horodecki Paweł Żyliński

Matematyka dyskretna

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.

Matematyczne Podstawy Informatyki

Algorytmiczna teoria grafów

Matematyczne Podstawy Informatyki

Indukowane Reguły Decyzyjne I. Wykład 3

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Digraf. 13 maja 2017

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Teoretyczne podstawy informatyki

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Poprawność semantyczna

Podstawy Informatyki. Wykład 6. Struktury danych

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Lista 4. Kamil Matuszewski 22 marca 2016

a) 7 b) 19 c) 21 d) 34

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

MATEMATYKA DYSKRETNA - KOLOKWIUM 2

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Digraf o V wierzchołkach posiada V 2 krawędzi, zatem liczba różnych digrafów o V wierzchołkach wynosi 2 VxV

Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Instrukcje dla zawodników

Porządek symetryczny: right(x)

(4) x (y z) = (x y) (x z), x (y z) = (x y) (x z), (3) x (x y) = x, x (x y) = x, (2) x 0 = x, x 1 = x

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Drzewa podstawowe poj

Kolorowanie wierzchołków Kolorowanie krawędzi Kolorowanie regionów i map. Wykład 8. Kolorowanie

ALGORYTMY I STRUKTURY DANYCH

1 Automaty niedeterministyczne

Matematyka dyskretna. Andrzej Łachwa, UJ, A/14

Matematyka dyskretna. Andrzej Łachwa, UJ, B/14

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Programowanie obiektowe

Wykład 8. Drzewa AVL i 2-3-4

Teoria grafów dla małolatów. Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska

dr inż. Paweł Myszkowski Wykład nr 11 ( )

Znajdowanie skojarzeń na maszynie równoległej

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Algorytmy i Struktury Danych

Nierówność Krafta-McMillana, Kodowanie Huffmana

Matematyczne Podstawy Informatyki

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Sortowanie topologiczne skierowanych grafów acyklicznych

Programowanie obiektowe

Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych

6. Wstępne pojęcia teorii grafów

Lista liniowa dwukierunkowa

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:

Suma dwóch grafów. Zespolenie dwóch grafów

KURS MATEMATYKA DYSKRETNA

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

Typy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne:

Ogólne wiadomości o drzewach

Egzaminy i inne zadania. Semestr II.

Algorytmy i Struktury Danych

Kolorowanie wierzchołków grafu

Czy istnieje zamknięta droga spaceru przechodząca przez wszystkie mosty w Królewcu dokładnie jeden raz?

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Zadania z ćwiczeń #18 (pon. 7 maja) Matematyka Dyskretna

0-0000, , , itd

. Podstawy Programowania 2. Drzewa bst - część pierwsza. Arkadiusz Chrobot. 22 maja 2016

Drzewa poszukiwań binarnych

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV

Algorytmy i Struktury Danych

Metody Kompilacji Wykład 3

Algebrą nazywamy strukturę A = (A, {F i : i I }), gdzie A jest zbiorem zwanym uniwersum algebry, zaś F i : A F i

Transkrypt:

Grafy (3): drzewa Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków UTP Bydgoszcz 13 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 1 / 107

Drzewo Definicja. Drzewo to graf acykliczny i spójny. Wniosek. Drzewo nie ma pętli i nie ma krawędzi wielokrotnych. Przykład. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 2 / 107

Las Definicja. Las to graf acykliczny. Wniosek. Spójne składowe lasu to drzewa. Przykład. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 3 / 107

Jeszcze kilka definicji Liść drzewa to wierzchołek o stopniu 1. Przykład. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 4 / 107

Liście Fakt. Każde drzewo skończone o co najmniej jednej krawędzi ma co najmniej dwa liście. Uzasadnienie. Niech w 1... w m będzie najdłuższą drogą acykliczną w drzewie. Wtedy wierzchołki w 1 oraz w m są liśćmi: oczywiście w 1 w m (droga jest acykliczna) i mają stopień 1 (gdyby nie, to istniałaby droga dłuższa od w 1... w m ). (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 5 / 107

Drzewa Twierdzenie. Drzewo mające n wierzchołków ma n 1 krawędzi. Dowód indukcyjny. Dla n = 2 drzewo ma tylko jedną krawędź. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 6 / 107

Drzewo mające n wierzchołków ma n 1 krawędzi Załóżmy, że dla n > 2 każde drzewo mające n wierzchołków ma n 1 krawędzi. Niech T będzie drzewem o n + 1 wierzchołkach. Z poprzedniego faktu wiemy, że T ma liść. Jeśli usuniemy z T wierzchołek będący liściem i usuniemy krawędź wychodzącą z tego wierzchołka, to otrzymamy drzewo o n wierzchołkach. Z założenia indukcyjnego ten graf ma n 1 krawędzi, więc T ma n krawędzi. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 7 / 107

Drzewa spinające Fakt. Jeśli G jest grafem spójnym i jeśli D jest minimalnym podrafem w G łączącym wszystkie wierzchołki, to D jest acykliczny (czyli jest drzewem). Uzasadnienie. Gdyby D zawierał cykl, to usuwając jedną krawędź tego cyklu nadal dostaniemy podraf łączący wszystkie wierzchołki G, co jest sprzeczne z minimalnością G. Definicja. Drzewem spinającym D grafu G jest drzewo zawierające wszystkie wierzchołki tego grafu. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 8 / 107

Drzewa spinające Przykład. Graf i jedno z setek drzew spinających tego grafu. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 9 / 107

Drzewo spinające Twierdzenie. Każdy graf spójny ma przynajmniej jedno drzewo spinające. Dowód. Graf G jest spójny. Niech H będzie podgrafem spójnym, który zawiera wszystkie wierzchołki G i możliwie najmniejszą liczbę krawędzi. Gdyby H zawierał cykl, to usuwając jedną krawędź tego cyklu nadal dostaniemy podraf spójny łączący wszystkie wierzchołki G, co jest sprzeczne z minimalnością H. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 10 / 107

Algorytm DRZEWO(v) Jeśli graf G jest spójny, to algorytm znajdzie drzewo spinające. Jeśli G nie jest spójny, to algorytm znajdzie drzewo spinające spójnej składowej grafu G zawierającej wierzchołek v. Na wejściu: wierzchołek v grafu G. Na wyjściu: zbiór krawędzi E drzewa spinającego. Zmienna pomocnicza: ciąg V odwiedzanych wierzchołków. Niech V := {v} oraz E :=. Dopóki istnieje krawędź w G łącząca wierzchołek z V z wierzchołkiem spoza V, to wybierz taką krawędź łączącą u V z w / V. Dołącz w do V oraz krawędź {u, v} do E. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 11 / 107

Przykład, algorytm DRZEWO(1) 6 7 8 6 7 8 3 4 5 3 4 5 1 2 1 2 V := {1}; E :=. Wybierz krawędź {1, 2}. V := {1, 2}; E := {{1, 2}}. Wybierz krawędź {1, 3}. V := {1, 2, 3}; E := {{1, 2}, {1, 3}}. Wybierz krawędź {1, 4}. V := {1, 2, 3, 4}; E := {{1, 2}, {1, 3}, {1, 4}}. Wybierz krawędź {2, 5}. V := {1, 2, 3, 4, 5}; E := {{1, 2}, {1, 3}, {1, 4}, {2, 5}}. Wybierz krawędź {3, 6}. V := {1, 2, 3, 4, 5, 6}; E := {{1, 2}, {1, 3}, {1, 4}, {2, 5}, {3, 6}}. Wybierz krawędź {4, 7}. V := {1, 2, 3, 4, 5, 6, 7}; E := {{1, 2}, {1, 3}, {1, 4}, {2, 5}, {3, 6}, {4, 7}}. Wybierz krawędź {5, 8}. V := {1, 2, 3, 4, 5, 6, 7, 8}; E := {{1, 2}, {1, 3}, {1, 4}, {2, 5}, {3, 6}, {4, 7}, {5, 8}}. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 12 / 107

Przykład, algorytm DRZEWO(2) 1 3 6 1 3 6 2 4 9 2 4 9 5 7 8 5 7 8 V := {2}; E :=. Wybierz krawędź {2, 4}. V := {2, 4}; E := {{2, 4}}. Wybierz krawędź {4, 6}. V := {2, 4, 6}; E := {{2, 4}, {4, 6}}. Wybierz krawędź {6, 9}. V := {2, 4, 6, 9}; E := {{2, 4}, {4, 6}, {6, 9}}. Wybierz krawędź {9, 8}. V := {2, 4, 6, 9, 8}; E := {{2, 4}, {4, 6}, {6, 9}, {9, 8}}. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 13 / 107

Przykład, algorytm DRZEWO(3) 1 3 6 1 3 6 2 4 9 2 4 9 5 7 8 5 7 8 V := {3}; E :=. Wybierz krawędź {3, 1}. V := {3, 1}; E := {{3, 1}}. Wybierz krawędź {1, 5}. V := {3, 1, 5}; E := {{3, 1}, {1, 5}}. Wybierz krawędź {3, 7}. V := {3, 1, 5, 7}; E := {{3, 1}, {1, 5}, {3, 7}}. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 14 / 107

Algorytm LAS Na wejściu: graf G(V G, E G ) (skończony). Na wyjściu: zbiór krawędzi EE lasu spinającego. Niech VV := oraz EE :=. Dopóki VV V G wykonaj: wybierz v V G \ VV wykonaj DRZEWO(v) otrzymując zbiór wierzchołków V i zbiór krawędzi E drzewa spinającego tej składowej spójnej grafu, która zawiera v dołącz wierzchołki z V do VV oraz krawędzie z E do EE (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 15 / 107

Przykład, algorytm LAS 6 7 8 6 7 8 3 4 5 3 4 5 1 2 1 2 VV := {1}; EE :=. Wybierz 1 V G \ VV. Wykonaj DRZEWO(1). V := {1, 2, 3, 4, 5, 6, 7, 8} E := {{1, 2}, {1, 3}, {1, 4}, {2, 5}, {3, 6}, {4, 7}, {5, 8}}. Dołącz wierzchołki z V do VV oraz krawędzie z E do EE VV := {1, 2, 3, 4, 5, 6, 7, 8} EE := {{1, 2}, {1, 3}, {1, 4}, {2, 5}, {3, 6}, {4, 7}, {5, 8}}. VV = V G ; zakończ. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 16 / 107

Przykład, algorytm LAS 1 3 6 1 3 6 2 4 9 2 4 9 5 7 8 5 7 8 VV := ; EE :=. Wybierz 2 V G \ VV. Wykonaj DRZEWO(2). V := {2, 4, 6, 9, 8} E := {{2, 4}, {4, 6}, {6, 9}, {9, 8}}. Dołącz wierzchołki z V do VV oraz krawędzie z E do EE VV := {2, 4, 6, 9, 8} EE := {{2, 4}, {4, 6}, {6, 9}, {9, 8}}. VV V G ; aa aa (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 17 / 107

Przykład, algorytm LAS, ciąg dalszy 1 3 6 1 3 6 2 4 9 2 4 9 5 7 8 5 7 8 VV := {2, 4, 6, 8, 9} EE := {{2, 4}, {4, 6}, {6, 9}, {9, 8}}. VV V G ; wybierz 3 V G \ VV. Wykonaj DRZEWO(3). V := {3, 1, 5, 7}; E := {{3, 1}, {1, 5}, {3, 7}}. Dołącz wierzchołki z V do VV oraz krawędzie z E do EE VV := {2, 4, 6, 9, 8, 1, 3, 5, 7} EE := {{2, 4}, {4, 6}, {6, 9}, {9, 8}, {3, 1}, {1, 5}, {3, 7}}. VV = V G ; zakończ. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 18 / 107

Korzeń Definicja. Drzewo z wyróżnionym korzeniem to drzewo, w którym wyróżniamy jeden z wierzchołków, nazywany korzeniem. Przykład. Często korzeń rysujemy na górze. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 19 / 107

Drzewo poszukiwań binarnych Obserwacja. Zestaw słów, ciąg liczb, czy inny zbiór z ustalonym porządkiem można przedstawić w postaci drzewa z wyróżnionym korzeniem zwanego drzewem poszukiwań binarnych. W takim drzewie każdy wierzchołek jest co najwyżej trzeciego stopnia. (Precyzyjniejsza definicja pojawi się za cztery slajdy.) (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 20 / 107

Drzewo poszukiwań binarnych Przykład. Etykieta każdego wierzchołka jest (w porządku alfabetycznym) dalsza niż sąsiedniego wierzchołka lewego-dolnego, a bliższa niż sąsiedniego wierzchołka dolnego-prawego. Ponadto w tym przykładzie na każdym poziomie etykieta z lewej strony jest wcześniejsza od etykiety po prawej. ja ga on be gu my wy dr ir ty (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 21 / 107

Drzewo genealogiczne Niech T będzie drzewem z wyróżnionym korzeniem k. Umownie potraktujmy T jak graf skierowany (zwrot strzałek określa grawitacja ). Przyjmijmy, że jeśli para (u, v) jest krawędzią tego drzewa, to wierzchołek u leży bliżej k niż wierzchołek v. Definicja. Jeśli para (u, v) jest krawędzią drzewa T, to U jest rodzicem v, natomiast v jest dzieckiem u. Ponadto, w jest potomkiem u, jeśli w u oraz u jest jakimś wierzchołkiem jedynej drogi prostej z korzenia do wierczhołka w. Definicja. Jeśli v jest wierzchołkiem, to poddrzewo Y v o korzeniu v jest drzewem składającym się z v, z wszystkich jego potomków oraz wszystkich krawędzi łączących te wierzchołki. Fakt. Każdy wierzchołek (z wyjątkiem korzenia) ma dokładnie jednego rodzica. Rodzic może mieć więcej niż jedno dziecko. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 22 / 107

Poddrzewa Przykład. Drzewo i jego niejednowierzchołkowe poddrzewa. ja ga on ga on be gu my wy be gu my wy gu wy dr ir ty dr ir ty dr ir ty (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 23 / 107

Drzewo binarne Definicja. Drzewo binarne to drzewo z wyróżnionym korzeniem, w którym każdy wierzchołek (węzeł) ma co najwyżej dwoje dzieci: albo dziecko lewe, albo prawe, albo dwoje dzieci (lewe i prawe), albo nie ma dzieci. Definicja. Drzewo o m rozgałęzieniach (m > 2) to drzewo, w którym każdy rodzic ma co najwyżej m dzieci oznaczanych różnymi liczbami ze zbioru {1, 2,..., m}. Definicja. Drzewo o m rozgałęzieniach (m > 2) lub drzewo binarne (m = 2) jest drzewem regularnym gdy każdy rodzic ma dokładnie m dzieci. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 24 / 107

Wysokość drzewa Definicja. Numer poziomu wierzchołka v to długość jedynej drogi prostej od korzenia do v. Numer korzenia to zero. Definicja. Wysokość drzewa z wyróżnionym korzeniem to największy numer poziomu wierzchołka (długość najdłuższej drogi prostej wychodzącej z korzenia). Definicja. Regularne drzewo o m rozgałęzieniach (m > 2) lub regularne drzewo binarne (m = 2) jest pełnym drzewem o m rozgałęzieniach, jeśli wszystkie liście mają numer poziomu równy wysokości drzewa. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 25 / 107

Przykład, pełne drzewo o trzech rozgałęzieniach i wysokości dwa. Drzewo to ma 13 wierzchołków, 13 = 32+1 1 3 1. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 26 / 107

Drzewo pełne Fakt. Pełne drzewo o m rozgałęzieniach i wysokości h ma wierzchołków. mh+1 1 m 1 Uzasadnienie. Na poziomie pierwszym mamy m wierzchołków (korzeń ma m dzieci). Każy z tych wierzcholków ma m dzieci, więc na poziomie drugim mamy m 2 dzieci,... Sumując, mamy na wszystkich poziomach 1 + m + m 2 + + m h wierzchołków. Stosujemy wzór na sumę h + 1 początkowych wyrazów ciągu geometrycznego: 1 + m + m 2 + + m h = 1 1 mh+1 1 m = mh+1 1 m 1. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 27 / 107

Drzewo pełne Fakt. Pełne drzewo o m rozgałęzieniach i wysokości h ma mh 1 m 1 oraz m h liści. rodziców Przykład. Pełne drzewo o trzech rozgałęzieniach i wysokości dwa ma 4 rodziców i 9 liści. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 28 / 107

Drzewo uporządkowane Definicja. Uporządkowane drzewo z wyróżnionym korzeniem to takie drzewo, w którym uporządkujemy dzieci każdego rodzica (od strony lewej do prawej). Przykład. Przyjmujemy O < R. Graf ten może przedstawiać wyniki powtarzanego rzutu monetą. O R OO OR RO RR OOO OOR ORO ORR ROO ROR RRO RRR (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 29 / 107

Algorytm DRZEWO i LAS Uwaga. Aby sprawdzić, czy graf jest spójny wystarczy sprawdzić, czy algorytm DRZEWO(v) (dla dowolnego wierzchołka v) tworzy drzewo zawierające wszystkie wierzchołki grafu lub, równoważnie, czy algorytm LAS tworzy tylko jedno drzewo. Uwaga. Aby sprawdzić, czy graf G jest acykliczny wystarczy sprawdzić, czy utworzony las spinający jest całym grafem (czy EE = E G ). (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 30 / 107

Algorytmy przeszukiwania w głąb drzewa z wyróżnionym korzeniem Podamy trzy algorytmy rekurencyjne przeszukiwania w głąb (przeszukiwania z nawrotami). Porządek prefiksowy (preorder): korzeń jest pierwszy, rodzice znajdują się przed dziećmi. Porządek postfiksowy (postorder): korzeń jest ostatni, rodzice znajdują się po dzieciach. Porządek inorder w drzewie binarnym: lewe dziecko znajduje się przed swoim rodzicem, a prawe po. W tych trzech algorytmach sposób poruszania się jest taki sam. Startujemy z wierzchołka ( patrzymy w dół ) stosując zasady: trzymaj się prawej, jeśli koniec drogi to zawróć. Inna jest tylko kolejność wpisywania wierzchołków na listę. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 31 / 107

Algorytm PREORDER(v) Na wejściu: uporządkowane skończone drzewo z wyróżnionym korzeniem v. Na wyjściu: lista L(v) wszystkich wierzchołków tego drzewa, na której każdy rodzic jest umieszczony przed swoimi dziećmi. Zapisz v na liście L(v) dla każdego dziecka w wierzchołka v (w porządku od lewej strony do prawej) PREORDER(w) (otrzymamy tu listę złożoną z w i jego potomków) dołącz L(w) na końcu dotychczas uzyskanej listy L(v) Obserwacja. Algorytm ten umieszcza wierzchołek na liście w momencie, gdy odwiedza go po raz pierwszy. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 32 / 107

Algorytm PREORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 Wpisz na listę. L( ) =. Weź pierwsze (lewe) dziecko v 2 rodzica. Wpisz v 2 na listę L(v 2 ) = v 2. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. Wpisz v 4 na listę L(v 4 ) = v 4. Wierzchołek v 4 nie ma dzieci. L(v 2 ) = v 2 v 4. Weź kolejne dziecko v 5 rodzica v 2. Wpisz v 5 na listę L(v 5 ) = v 5. Weź pierwsze (lewe) dziecko v 9 rodzica v 5. Wpisz v 9 na listę L(v 9 ) = v 9. Wierzchołek v 9 nie ma dzieci. L(v 5 ) = v 5 v 9. Weź kolejne dziecko 0 rodzica v 5. Wpisz 0 na listę L(0 ) = 0. Wierzchołek 0 nie ma dzieci. L(v 5 ) = v 5 v 9 0. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 33 / 107

Algorytm PREORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 Wpisz na listę. L( ) =. Weź pierwsze (lewe) dziecko v 2 rodzica. Wpisz v 2 na listę L(v 2 ) = v 2. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. Wpisz v 4 na listę L(v 4 ) = v 4. Wierzchołek v 4 nie ma dzieci. L(v 2 ) = v 2 v 4. Weź kolejne dziecko v 5 rodzica v 2. Wpisz v 5 na listę L(v 5 ) = v 5. Weź pierwsze (lewe) dziecko v 9 rodzica v 5. Wpisz v 9 na listę L(v 9 ) = v 9. Wierzchołek v 9 nie ma dzieci. L(v 5 ) = v 5 v 9. Weź kolejne dziecko 0 rodzica v 5. Wpisz 0 na listę L(0 ) = 0. Wierzchołek 0 nie ma dzieci. L(v 5 ) = v 5 v 9 0. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 34 / 107

Algorytm PREORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 Wpisz na listę. L( ) =. Weź pierwsze (lewe) dziecko v 2 rodzica. Wpisz v 2 na listę L(v 2 ) = v 2. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. Wpisz v 4 na listę L(v 4 ) = v 4. Wierzchołek v 4 nie ma dzieci. L(v 2 ) = v 2 v 4. Weź kolejne dziecko v 5 rodzica v 2. Wpisz v 5 na listę L(v 5 ) = v 5. Weź pierwsze (lewe) dziecko v 9 rodzica v 5. Wpisz v 9 na listę L(v 9 ) = v 9. Wierzchołek v 9 nie ma dzieci. L(v 5 ) = v 5 v 9. Weź kolejne dziecko 0 rodzica v 5. Wpisz 0 na listę L(0 ) = 0. Wierzchołek 0 nie ma dzieci. L(v 5 ) = v 5 v 9 0. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 35 / 107

Algorytm PREORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 Wpisz na listę. L( ) =. Weź pierwsze (lewe) dziecko v 2 rodzica. Wpisz v 2 na listę L(v 2 ) = v 2. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. Wpisz v 4 na listę L(v 4 ) = v 4. Wierzchołek v 4 nie ma dzieci. L(v 2 ) = v 2 v 4. Weź kolejne dziecko v 5 rodzica v 2. Wpisz v 5 na listę L(v 5 ) = v 5. Weź pierwsze (lewe) dziecko v 9 rodzica v 5. Wpisz v 9 na listę L(v 9 ) = v 9. Wierzchołek v 9 nie ma dzieci. L(v 5 ) = v 5 v 9. Weź kolejne dziecko 0 rodzica v 5. Wpisz 0 na listę L(0 ) = 0. Wierzchołek 0 nie ma dzieci. L(v 5 ) = v 5 v 9 0. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 36 / 107

Algorytm PREORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 Wpisz na listę. L( ) =. Weź pierwsze (lewe) dziecko v 2 rodzica. Wpisz v 2 na listę L(v 2 ) = v 2. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. Wpisz v 4 na listę L(v 4 ) = v 4. Wierzchołek v 4 nie ma dzieci. L(v 2 ) = v 2 v 4. Weź kolejne dziecko v 5 rodzica v 2. Wpisz v 5 na listę L(v 5 ) = v 5. Weź pierwsze (lewe) dziecko v 9 rodzica v 5. Wpisz v 9 na listę L(v 9 ) = v 9. Wierzchołek v 9 nie ma dzieci. L(v 5 ) = v 5 v 9. Weź kolejne dziecko 0 rodzica v 5. Wpisz 0 na listę L(0 ) = 0. Wierzchołek 0 nie ma dzieci. L(v 5 ) = v 5 v 9 0. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 37 / 107

Algorytm PREORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 Wpisz na listę. L( ) =. Weź pierwsze (lewe) dziecko v 2 rodzica. Wpisz v 2 na listę L(v 2 ) = v 2. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. Wpisz v 4 na listę L(v 4 ) = v 4. Wierzchołek v 4 nie ma dzieci. L(v 2 ) = v 2 v 4. Weź kolejne dziecko v 5 rodzica v 2. Wpisz v 5 na listę L(v 5 ) = v 5. Weź pierwsze (lewe) dziecko v 9 rodzica v 5. Wpisz v 9 na listę L(v 9 ) = v 9. Wierzchołek v 9 nie ma dzieci. L(v 5 ) = v 5 v 9. Weź kolejne dziecko 0 rodzica v 5. Wpisz 0 na listę L(0 ) = 0. Wierzchołek 0 nie ma dzieci. L(v 5 ) = v 5 v 9 0. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 38 / 107

Algorytm PREORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 L(v 2 ) = v 2 v 4, L(v 5 ) = v 5 v 9 0. Wszyscy potomkowie v 2 zostali uwzględnieni. L(v 2 ) = v 2 v 4 v 5 v 9 0. L( ) = v 2 v 4 v 5 v 9 0. aaa aa aa aa aa(wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 39 / 107

v 9 0 L( ) = v 2 v 4 v 5 v 9 0. Weź kolejne dziecko v 3 rodzica. Wpisz v 3 na listę L(v 3 ) = v 3. Weź pierwsze (lewe) dziecko v 6 rodzica v 3. Wpisz v 6 na listę L(v 6 ) = v 6. Wierzchołek v 6 nie ma dzieci. L(v 3 ) = v 3 v 6. Weź kolejne dziecko v 7 rodzica v 7. Wpisz v 7 na listę L(v 7 ) = v 7. Wierzchołek v 7 nie ma dzieci. L(v 3 ) = v 3 v 6 v 7. Weź kolejne dziecko v 8 rodzica v 8. Wpisz v 8 na listę L(v 8 ) = v 8. Wierzchołek v 8 nie ma dzieci. L(v 3 ) = v 3 v 6 v 7 v 8. Wszystkie dzieci wierzchołka v 3 zostały uwzględnione. L( ) = v 2 v 4 v 5 v 9 0 v 3 v 6 v 7 v 8. Wszystkie dzieci wierzchołka zostały (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 40 / 107 Algorytm PREORDER(v), przykład v 4 v 5 v 6 v 7 v 8

v 9 0 L( ) = v 2 v 4 v 5 v 9 0. Weź kolejne dziecko v 3 rodzica. Wpisz v 3 na listę L(v 3 ) = v 3. Weź pierwsze (lewe) dziecko v 6 rodzica v 3. Wpisz v 6 na listę L(v 6 ) = v 6. Wierzchołek v 6 nie ma dzieci. L(v 3 ) = v 3 v 6. Weź kolejne dziecko v 7 rodzica v 7. Wpisz v 7 na listę L(v 7 ) = v 7. Wierzchołek v 7 nie ma dzieci. L(v 3 ) = v 3 v 6 v 7. Weź kolejne dziecko v 8 rodzica v 8. Wpisz v 8 na listę L(v 8 ) = v 8. Wierzchołek v 8 nie ma dzieci. L(v 3 ) = v 3 v 6 v 7 v 8. Wszystkie dzieci wierzchołka v 3 zostały uwzględnione. L( ) = v 2 v 4 v 5 v 9 0 v 3 v 6 v 7 v 8. Wszystkie dzieci wierzchołka zostały (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 41 / 107 Algorytm PREORDER(v), przykład v 4 v 5 v 6 v 7 v 8

v 9 0 L( ) = v 2 v 4 v 5 v 9 0. Weź kolejne dziecko v 3 rodzica. Wpisz v 3 na listę L(v 3 ) = v 3. Weź pierwsze (lewe) dziecko v 6 rodzica v 3. Wpisz v 6 na listę L(v 6 ) = v 6. Wierzchołek v 6 nie ma dzieci. L(v 3 ) = v 3 v 6. Weź kolejne dziecko v 7 rodzica v 3. Wpisz v 7 na listę L(v 7 ) = v 7. Wierzchołek v 7 nie ma dzieci. L(v 3 ) = v 3 v 6 v 7. Weź kolejne dziecko v 8 rodzica v 3. Wpisz v 8 na listę L(v 8 ) = v 8. Wierzchołek v 8 nie ma dzieci. L(v 3 ) = v 3 v 6 v 7 v 8. Wszystkie dzieci wierzchołka v 3 zostały uwzględnione. L( ) = v 2 v 4 v 5 v 9 0 v 3 v 6 v 7 v 8. Wszystkie dzieci wierzchołka zostały (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 42 / 107 Algorytm PREORDER(v), przykład v 4 v 5 v 6 v 7 v 8

v 9 0 L( ) = v 2 v 4 v 5 v 9 0. Weź kolejne dziecko v 3 rodzica. Wpisz v 3 na listę L(v 3 ) = v 3. Weź pierwsze (lewe) dziecko v 6 rodzica v 3. Wpisz v 6 na listę L(v 6 ) = v 6. Wierzchołek v 6 nie ma dzieci. L(v 3 ) = v 3 v 6. Weź kolejne dziecko v 7 rodzica v 3. Wpisz v 7 na listę L(v 7 ) = v 7. Wierzchołek v 7 nie ma dzieci. L(v 3 ) = v 3 v 6 v 7. Weź kolejne dziecko v 8 rodzica v 3. Wpisz v 8 na listę L(v 8 ) = v 8. Wierzchołek v 8 nie ma dzieci. L(v 3 ) = v 3 v 6 v 7 v 8. Wszystkie dzieci wierzchołka v 3 zostały uwzględnione. L( ) = v 2 v 4 v 5 v 9 0 v 3 v 6 v 7 v 8. Wszystkie dzieci wierzchołka zostały (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 43 / 107 Algorytm PREORDER(v), przykład v 4 v 5 v 6 v 7 v 8

Algorytm PREORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 L( ) = v 2 v 4 v 5 v 9 0. L(v 3 ) = v 3. Wierzchołek v 8 nie ma dzieci. L(v 3 ) = v 3 v 6 v 7 v 8. Wszystkie dzieci wierzchołka v 3 zostały uwzględnione. Dopisz L(v 3 ) na końcu listy L( ) L( ) = v 2 v 4 v 5 v 9 0 v 3 v 6 v 7 v 8. Wszystkie dzieci wierzchołka zostały uwzględnione. Koniec. aa aa aa(wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 44 / 107

Algorytm POSTORDER(v) Na wejściu: uporządkowane skończone drzewo z wyróżnionym korzeniem v. Na wyjściu: lista L(v) wszystkich wierzchołków tego drzewa, na której każdy rodzic jest umieszczony po swoich dzieciach. Na początku lista L(v) jest pusta, będziemy to zapisywać L(v) = λ dla każdego dziecka w wierzchołka v (w porządku od lewej strony do prawej) POSTORDER(w) (otrzymamy tu listę złożoną z w i jego potomków) dołącz L(w) na końcu dotychczas uzyskanej listy L(v) Dołącz v na końcu listy L(v). Obserwacja. Algorytm ten umieszcza wierzchołek na liście w momencie, gdy odwiedza go po raz ostatni. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 45 / 107

Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 Weź. L( ) = λ. Weź pierwsze (lewe) dziecko v 2 rodzica. L(v 2 ) = λ. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. L(v 4 ) = λ. Wierzchołek v 4 nie ma dzieci. Wpisz v 4 na listę. L(v 4 ) = v 4. L(v 2 ) = v 4. Weź kolejne dziecko v 5 rodzica v 2. L(v 5 ) = λ. Weź pierwsze (lewe) dziecko v 9 rodzica v 5. L(v 9 ) = λ. Wierzchołek v 9 nie ma dzieci. Wpisz v 9 na listę. L(v 9 ) = v 9. L(v 5 ) = v 9. Weź kolejne dziecko 0 rodzica v 5. L(0 ) = λ. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 46 / 107

Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 Weź. L( ) = λ. Weź pierwsze (lewe) dziecko v 2 rodzica. L(v 2 ) = λ. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. L(v 4 ) = λ. Wierzchołek v 4 nie ma dzieci. Wpisz v 4 na listę. L(v 4 ) = v 4. L(v 2 ) = v 4. Weź kolejne dziecko v 5 rodzica v 2. L(v 5 ) = λ. Weź pierwsze (lewe) dziecko v 9 rodzica v 5. L(v 9 ) = λ. Wierzchołek v 9 nie ma dzieci. Wpisz v 9 na listę. L(v 9 ) = v 9. L(v 5 ) = v 9. Weź kolejne dziecko 0 rodzica v 5. L(0 ) = λ. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 47 / 107

Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 Weź. L( ) = λ. Weź pierwsze (lewe) dziecko v 2 rodzica. L(v 2 ) = λ. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. L(v 4 ) = λ. Wierzchołek v 4 nie ma dzieci. Wpisz v 4 na listę. L(v 4 ) = v 4. L(v 2 ) = v 4. Weź kolejne dziecko v 5 rodzica v 2. L(v 5 ) = λ. Weź pierwsze (lewe) dziecko v 9 rodzica v 5. L(v 9 ) = λ. Wierzchołek v 9 nie ma dzieci. Wpisz v 9 na listę. L(v 9 ) = v 9. L(v 5 ) = v 9. Weź kolejne dziecko 0 rodzica v 5. L(0 ) = λ. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 48 / 107

Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 Weź. L( ) = λ. Weź pierwsze (lewe) dziecko v 2 rodzica. L(v 2 ) = λ. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. L(v 4 ) = λ. Wierzchołek v 4 nie ma dzieci. Wpisz v 4 na listę. L(v 4 ) = v 4. L(v 2 ) = v 4. Weź kolejne dziecko v 5 rodzica v 2. L(v 5 ) = λ. Weź pierwsze (lewe) dziecko v 9 rodzica v 5. L(v 9 ) = λ. Wierzchołek v 9 nie ma dzieci. Wpisz v 9 na listę. L(v 9 ) = v 9. L(v 5 ) = v 9. Weź kolejne dziecko 0 rodzica v 5. L(0 ) = λ. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 49 / 107

Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 Weź. L( ) = λ. Weź pierwsze (lewe) dziecko v 2 rodzica. L(v 2 ) = λ. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. L(v 4 ) = λ. Wierzchołek v 4 nie ma dzieci. Wpisz v 4 na listę. L(v 4 ) = v 4. L(v 2 ) = v 4. Weź kolejne dziecko v 5 rodzica v 2. L(v 5 ) = λ. Weź pierwsze (lewe) dziecko v 9 rodzica v 5. L(v 9 ) = λ. Wierzchołek v 9 nie ma dzieci. Wpisz v 9 na listę. L(v 9 ) = v 9. L(v 5 ) = v 9. Weź kolejne dziecko 0 rodzica v 5. L(0 ) = λ. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 50 / 107

Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 Weź. L( ) = λ. Weź pierwsze (lewe) dziecko v 2 rodzica. L(v 2 ) = λ. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. L(v 4 ) = λ. Wierzchołek v 4 nie ma dzieci. Wpisz v 4 na listę. L(v 4 ) = v 4. L(v 2 ) = v 4. Weź kolejne dziecko v 5 rodzica v 2. L(v 5 ) = λ. Weź pierwsze (lewe) dziecko v 9 rodzica v 5. L(v 9 ) = λ. Wierzchołek v 9 nie ma dzieci. Wpisz v 9 na listę. L(v 9 ) = v 9. L(v 5 ) = v 9. Weź kolejne dziecko 0 rodzica v 5. L(0 ) = λ. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 51 / 107

Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 L(v 2 ) = v 4. L(v 5 ) = v 9. L(0 ) = λ. Wierzchołek 0 nie ma dzieci. Wpisz 0 na listę. L(0 ) = 0. L(v 5 ) = v 9 0. Wszystkie dzieci v 5 zostały odwiedzone. Wpisz v 5 na listę. L(v 5 ) = v 9 0 v 5. L(v 2 ) = v 4 v 9 0 v 5. Wszystkie dzieci v 2 zostały odwiedzone. Wpisz v 2 na listę. L(v 5 ) = v 4 v 9 0 v 5 v 2. L( ) = v 4 v 9 0 v 5 v 2. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 52 / 107

Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 L(v 2 ) = v 4. L(v 5 ) = v 9. L(0 ) = λ. Wierzchołek 0 nie ma dzieci. Wpisz 0 na listę. L(0 ) = 0. L(v 5 ) = v 9 0. Wszystkie dzieci v 5 zostały odwiedzone. Wpisz v 5 na listę. L(v 5 ) = v 9 0 v 5. L(v 2 ) = v 4 v 9 0 v 5. Wszystkie dzieci v 2 zostały odwiedzone. Wpisz v 2 na listę. L(v 5 ) = v 4 v 9 0 v 5 v 2. L( ) = v 4 v 9 0 v 5 v 2. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 53 / 107

Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 L(v 2 ) = v 4. L(v 5 ) = v 9. L(0 ) = λ. Wierzchołek 0 nie ma dzieci. Wpisz 0 na listę. L(0 ) = 0. L(v 5 ) = v 9 0. Wszystkie dzieci v 5 zostały odwiedzone. Wpisz v 5 na listę. L(v 5 ) = v 9 0 v 5. L(v 2 ) = v 4 v 9 0 v 5. Wszystkie dzieci v 2 zostały odwiedzone. Wpisz v 2 na listę. L(v 2 ) = v 4 v 9 0 v 5 v 2. L( ) = v 4 v 9 0 v 5 v 2. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 54 / 107

Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 L(v 2 ) = v 4. L(v 5 ) = v 9. L(0 ) = λ. Wierzchołek 0 nie ma dzieci. Wpisz 0 na listę. L(0 ) = 0. L(v 5 ) = v 9 0. Wszystkie dzieci v 5 zostały odwiedzone. Wpisz v 5 na listę. L(v 5 ) = v 9 0 v 5. L(v 2 ) = v 4 v 9 0 v 5. Wszystkie dzieci v 2 zostały odwiedzone. Wpisz v 2 na listę. L( ) = v 4 v 9 0 v 5 v 2. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 55 / 107

v 9 0 L( ) = v 4 v 9 0 v 5 v 2. Weź kolejne dziecko v 3 rodzica. L(v 3 ) = λ. Weź pierwsze (lewe) dziecko v 6 rodzica v 3. L(v 6 ) = λ. Wierzchołek v 6 nie ma dzieci. Wpisz v 6 na listę. L(v 6 ) = v 6. L(v 3 ) = v 6. Weź kolejne dziecko v 7 rodzica v 3. L(v 7 ) = λ. Wierzchołek v 7 nie ma dzieci. Wpisz v 7 na listę. L(v 7 ) = v 7. L(v 3 ) = v 6 v 7. Weź kolejne dziecko v 8 rodzica v 3. L(v 8 ) = λ. Wierzchołek v 8 nie ma dzieci. Wpisz v 8 na listę. L(v 8 ) = v 8. L(v 3 ) = v 6 v 7 v 8. Wszystkie dzieci v 3 zostały odwiedzone. Wpisz v 3 na listę. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 56 / 107 Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8

v 9 0 L( ) = v 4 v 9 0 v 5 v 2. Weź kolejne dziecko v 3 rodzica. L(v 3 ) = λ. Weź pierwsze (lewe) dziecko v 6 rodzica v 3. L(v 6 ) = λ. Wierzchołek v 6 nie ma dzieci. Wpisz v 6 na listę. L(v 6 ) = v 6. L(v 3 ) = v 6. Weź kolejne dziecko v 7 rodzica v 3. L(v 7 ) = λ. Wierzchołek v 7 nie ma dzieci. Wpisz v 7 na listę. L(v 7 ) = v 7. L(v 3 ) = v 6 v 7. Weź kolejne dziecko v 8 rodzica v 3. L(v 8 ) = λ. Wierzchołek v 8 nie ma dzieci. Wpisz v 8 na listę. L(v 8 ) = v 8. L(v 3 ) = v 6 v 7 v 8. Wszystkie dzieci v 3 zostały odwiedzone. Wpisz v 3 na listę. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 57 / 107 Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8

v 9 0 L( ) = v 4 v 9 0 v 5 v 2. Weź kolejne dziecko v 3 rodzica. L(v 3 ) = λ. Weź pierwsze (lewe) dziecko v 6 rodzica v 3. L(v 6 ) = λ. Wierzchołek v 6 nie ma dzieci. Wpisz v 6 na listę. L(v 6 ) = v 6. L(v 3 ) = v 6. Weź kolejne dziecko v 7 rodzica v 3. L(v 7 ) = λ. Wierzchołek v 7 nie ma dzieci. Wpisz v 7 na listę. L(v 7 ) = v 7. L(v 3 ) = v 6 v 7. Weź kolejne dziecko v 8 rodzica v 3. L(v 8 ) = λ. Wierzchołek v 8 nie ma dzieci. Wpisz v 8 na listę. L(v 8 ) = v 8. L(v 3 ) = v 6 v 7 v 8. Wszystkie dzieci v 3 zostały odwiedzone. Wpisz v 3 na listę. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 58 / 107 Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8

v 9 0 L( ) = v 4 v 9 0 v 5 v 2. Weź kolejne dziecko v 3 rodzica. L(v 3 ) = λ. Weź pierwsze (lewe) dziecko v 6 rodzica v 3. L(v 6 ) = λ. Wierzchołek v 6 nie ma dzieci. Wpisz v 6 na listę. L(v 6 ) = v 6. L(v 3 ) = v 6. Weź kolejne dziecko v 7 rodzica v 3. L(v 7 ) = λ. Wierzchołek v 7 nie ma dzieci. Wpisz v 7 na listę. L(v 7 ) = v 7. L(v 3 ) = v 6 v 7. Weź kolejne dziecko v 8 rodzica v 3. L(v 8 ) = λ. Wierzchołek v 8 nie ma dzieci. Wpisz v 8 na listę. L(v 8 ) = v 8. L(v 3 ) = v 6 v 7 v 8. Wszystkie dzieci v 3 zostały odwiedzone. Wpisz v 3 na listę. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 59 / 107 Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8

v 9 0 L( ) = v 4 v 9 0 v 5 v 2. Weź kolejne dziecko v 3 rodzica. L(v 3 ) = λ. Weź pierwsze (lewe) dziecko v 6 rodzica v 3. L(v 6 ) = λ. Wierzchołek v 6 nie ma dzieci. Wpisz v 6 na listę. L(v 6 ) = v 6. L(v 3 ) = v 6. Weź kolejne dziecko v 7 rodzica v 3. L(v 7 ) = λ. Wierzchołek v 7 nie ma dzieci. Wpisz v 7 na listę. L(v 7 ) = v 7. L(v 3 ) = v 6 v 7. Weź kolejne dziecko v 8 rodzica v 3. L(v 8 ) = λ. Wierzchołek v 8 nie ma dzieci. Wpisz v 8 na listę. L(v 8 ) = v 6 v 7 v 8. L(v 3 ) = v 6 v 7 v 8. Wszystkie dzieci v 3 zostały odwiedzone. Wpisz v 3 na listę. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 60 / 107 Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8

Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 L( ) = v 4 v 9 0 v 5 v 2. L(v 3 ) = v 6 v 7 v 8. Wszystkie dzieci v 3 zostały odwiedzone. Wpisz v 3 na listę. L(v 3 ) = v 6 v 7 v 8 v 3. L( ) = v 4 v 9 0 v 5 v 2 v 6 v 7 v 8 v 3. Wszystkie dzieci wierzchołka zostały odwiedzone. Wpisz na listę. L( ) = v 4 v 9 0 v 5 v 2 v 6 v 7 v 8 v 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 61 / 107

Algorytm POSTORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 0 L( ) = v 4 v 9 0 v 5 v 2. L(v 3 ) = v 6 v 7 v 8. Wszystkie dzieci v 3 zostały odwiedzone. Wpisz v 3 na listę. L(v 3 ) = v 6 v 7 v 8 v 3. L( ) = v 4 v 9 0 v 5 v 2 v 6 v 7 v 8 v 3. Wszystkie dzieci wierzchołka zostały odwiedzone. Wpisz na listę. L( ) = v 4 v 9 0 v 5 v 2 v 6 v 7 v 8 v 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 62 / 107

Algorytm INORDER(v) Na wejściu: uporządkowane skończone drzewo z wyróżnionym korzeniem v. Na wyjściu: lista L(v) wszystkich wierzchołków tego drzewa, na której każdy rodzic jest umieszczony między swoim lewym i prawym dzieckiem (o ile je ma). Na początku lista L(v) jest pusta, będziemy to zapisywać L(v) = λ. Jeżeli v ma lewe dziecko w, to INORDER(w) (otrzymamy tu listę złożoną z w i jego potomków) dołącz L(w) na końcu dotychczas uzyskanej listy L(v); dołącz v na końcu listy. Jeżeli v ma prawe dziecko u, to INORDER(u) (otrzymamy tu listę złożoną z u i jego potomków) dołącz L(u) na końcu dotychczas uzyskanej listy L(v). Obserwacja. Jeżeli wierzchołek nie ma dzieci, to algorytm na wyjściu podaje tylko ten wierzchołek. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 63 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 Weź. L( ) = λ. Weź pierwsze (lewe) dziecko v 2 rodzica. L(v 2 ) = λ. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. L(v 4 ) = λ. Wierzchołek v 4 nie ma dzieci. Wpisz v 4 na listę. L(v 4 ) = v 4. Powróć do v 2, wpisz v 2 na listę L(v 2 ) = v 4 v 2. Weź kolejne dziecko v 5 rodzica v 2. L(v 5 ) = λ. Weź pierwsze (lewe) dziecko v 8 rodzica v 5. L(v 9 ) = λ. Wierzchołek v 8 nie ma dzieci. Wpisz v 8 na listę. L(v 8 ) = v 8. Powróć do v 5, wpisz v 5 na listę L(v 5 ) = v 8 v 5. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 64 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 Weź. L( ) = λ. Weź pierwsze (lewe) dziecko v 2 rodzica. L(v 2 ) = λ. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. L(v 4 ) = λ. Wierzchołek v 4 nie ma dzieci. Wpisz v 4 na listę. L(v 4 ) = v 4. Powróć do v 2, wpisz v 2 na listę L(v 2 ) = v 4 v 2. Weź kolejne dziecko v 5 rodzica v 2. L(v 5 ) = λ. Weź pierwsze (lewe) dziecko v 8 rodzica v 5. L(v 9 ) = λ. Wierzchołek v 8 nie ma dzieci. Wpisz v 8 na listę. L(v 8 ) = v 8. Powróć do v 5, wpisz v 5 na listę L(v 5 ) = v 8 v 5. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 65 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 Weź. L( ) = λ. Weź pierwsze (lewe) dziecko v 2 rodzica. L(v 2 ) = λ. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. L(v 4 ) = λ. Wierzchołek v 4 nie ma dzieci. Wpisz v 4 na listę. L(v 4 ) = v 4. Powróć do v 2, wpisz v 2 na listę L(v 2 ) = v 4 v 2. Weź kolejne dziecko v 5 rodzica v 2. L(v 5 ) = λ. Weź pierwsze (lewe) dziecko v 8 rodzica v 5. L(v 9 ) = λ. Wierzchołek v 8 nie ma dzieci. Wpisz v 8 na listę. L(v 8 ) = v 8. Powróć do v 5, wpisz v 5 na listę L(v 5 ) = v 8 v 5. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 66 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 Weź. L( ) = λ. Weź pierwsze (lewe) dziecko v 2 rodzica. L(v 2 ) = λ. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. L(v 4 ) = λ. Wierzchołek v 4 nie ma dzieci. Wpisz v 4 na listę. L(v 4 ) = v 4. Wpisz v 2 na listę L(v 2 ) = v 4 v 2. Weź kolejne dziecko v 5 rodzica v 2. L(v 5 ) = λ. Weź pierwsze (lewe) dziecko v 8 rodzica v 5. L(v 9 ) = λ. Wierzchołek v 8 nie ma dzieci. Wpisz v 8 na listę. L(v 8 ) = v 8. Powróć do v 5, wpisz v 5 na listę L(v 5 ) = v 8 v 5. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 67 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 Weź. L( ) = λ. Weź pierwsze (lewe) dziecko v 2 rodzica. L(v 2 ) = λ. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. L(v 4 ) = λ. Wierzchołek v 4 nie ma dzieci. Wpisz v 4 na listę. L(v 4 ) = v 4. Wpisz v 2 na listę L(v 2 ) = v 4 v 2. Weź kolejne dziecko v 5 rodzica v 2. L(v 5 ) = λ. Weź pierwsze (lewe) dziecko v 8 rodzica v 5. L(v 9 ) = λ. Wierzchołek v 8 nie ma dzieci. Wpisz v 8 na listę. L(v 8 ) = v 8. Powróć do v 5, wpisz v 5 na listę L(v 5 ) = v 8 v 5. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 68 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 Weź. L( ) = λ. Weź pierwsze (lewe) dziecko v 2 rodzica. L(v 2 ) = λ. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. L(v 4 ) = λ. Wierzchołek v 4 nie ma dzieci. Wpisz v 4 na listę. L(v 4 ) = v 4. Wpisz v 2 na listę L(v 2 ) = v 4 v 2. Weź kolejne dziecko v 5 rodzica v 2. L(v 5 ) = λ. Weź pierwsze (lewe) dziecko v 8 rodzica v 5. L(v 9 ) = λ. Wierzchołek v 8 nie ma dzieci. Wpisz v 8 na listę. L(v 8 ) = v 8. Powróć do v 5, wpisz v 5 na listę L(v 5 ) = v 8 v 5. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 69 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 Weź. L( ) = λ. Weź pierwsze (lewe) dziecko v 2 rodzica. L(v 2 ) = λ. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. L(v 4 ) = λ. Wierzchołek v 4 nie ma dzieci. Wpisz v 4 na listę. L(v 4 ) = v 4. Wpisz v 2 na listę L(v 2 ) = v 4 v 2. Weź kolejne dziecko v 5 rodzica v 2. L(v 5 ) = λ. Weź pierwsze (lewe) dziecko v 8 rodzica v 5. L(v 8 ) = λ. Wierzchołek v 8 nie ma dzieci. Wpisz v 8 na listę. L(v 8 ) = v 8. Powróć do v 5, wpisz v 5 na listę L(v 5 ) = v 8 v 5. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 70 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 Weź. L( ) = λ. Weź pierwsze (lewe) dziecko v 2 rodzica. L(v 2 ) = λ. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. L(v 4 ) = λ. Wierzchołek v 4 nie ma dzieci. Wpisz v 4 na listę. L(v 4 ) = v 4. Wpisz v 2 na listę L(v 2 ) = v 4 v 2. Weź kolejne dziecko v 5 rodzica v 2. L(v 5 ) = λ. Weź pierwsze (lewe) dziecko v 8 rodzica v 5. L(v 8 ) = λ. Wierzchołek v 8 nie ma dzieci. Wpisz v 8 na listę. L(v 8 ) = v 8. Powróć do v 5, wpisz v 5 na listę L(v 5 ) = v 8 v 5. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 71 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 Weź. L( ) = λ. Weź pierwsze (lewe) dziecko v 2 rodzica. L(v 2 ) = λ. Weź pierwsze (lewe) dziecko v 4 rodzica v 2. L(v 4 ) = λ. Wierzchołek v 4 nie ma dzieci. Wpisz v 4 na listę. L(v 4 ) = v 4. Wpisz v 2 na listę L(v 2 ) = v 4 v 2. Weź kolejne dziecko v 5 rodzica v 2. L(v 5 ) = λ. Weź pierwsze (lewe) dziecko v 8 rodzica v 5. L(v 8 ) = λ. Wierzchołek v 8 nie ma dzieci. Wpisz v 8 na listę. L(v 8 ) = v 8. Wpisz v 5 na listę L(v 5 ) = v 8 v 5. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 72 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 L(v 2 ) = v 4 v 2, L(v 5 ) = v 8 v 5. Weź kolejne dziecko v 9 rodzica v 5. L(v 9 ) = λ. Wierzchołek v 9 nie ma dzieci. Wpisz v 9 na listę. L(v 9 ) = v 9. Dołącz L(v 9 ) nas końcu listy L(v 5 ). L(v 5 )v 8 v 5 v 9. Dołącz L(v 5 ) nas końcu listy L(v 2 ). L(v 2 ) = v 4 v 2 v 8 v 5 v 9 Powróć do, wpisz na listę L( ) = v 4 v 2 v 8 v 5 v 9 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 73 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 L(v 2 ) = v 4 v 2, L(v 5 ) = v 8 v 5. Weź kolejne dziecko v 9 rodzica v 5. L(v 9 ) = λ. Wierzchołek v 9 nie ma dzieci. Wpisz v 9 na listę. L(v 9 ) = v 9. Dołącz L(v 9 ) nas końcu listy L(v 5 ). L(v 5 ) = v 8 v 5 v 9. Dołącz L(v 5 ) nas końcu listy L(v 2 ). L(v 2 ) = v 4 v 2 v 8 v 5 v 9 Powróć do, wpisz na listę L( ) = v 4 v 2 v 8 v 5 v 9 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 74 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 L(v 2 ) = v 4 v 2, L(v 5 ) = v 8 v 5. Weź kolejne dziecko v 9 rodzica v 5. L(v 9 ) = λ. Wierzchołek v 9 nie ma dzieci. Wpisz v 9 na listę. L(v 9 ) = v 9. Dołącz L(v 9 ) nas końcu listy L(v 5 ). L(v 5 ) = v 8 v 5 v 9. Dołącz L(v 5 ) nas końcu listy L(v 2 ). L(v 2 ) = v 4 v 2 v 8 v 5 v 9 Wpisz na listę L( ) = v 4 v 2 v 8 v 5 v 9 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 75 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 L( ) = v 4 v 2 v 8 v 5 v 9 Weź kolejne dziecko v 3 rodzica. L(v 3 ) = λ. Weź lewe dziecko v 6 rodzica v 3. L(v 6 ) = λ. Wierzchołek v 6 nie ma dzieci. Wpisz v 6 na listę. L(v 6 ) = v 6. Powróć do v 3, wpisz v 3 na listę L(v 3 ) = v 6 v 3 Weź kolejne dziecko v 7 rodzica. L(v 3 ) = λ. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 76 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 L( ) = v 4 v 2 v 8 v 5 v 9 Weź kolejne dziecko v 3 rodzica. L(v 3 ) = λ. Weź lewe dziecko v 6 rodzica v 3. L(v 6 ) = λ. Wierzchołek v 6 nie ma dzieci. Wpisz v 6 na listę. L(v 6 ) = v 6. Powróć do v 3, wpisz v 3 na listę L(v 3 ) = v 6 v 3 Weź kolejne dziecko v 7 rodzica. L(v 3 ) = λ. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 77 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 L( ) = v 4 v 2 v 8 v 5 v 9 Weź kolejne dziecko v 3 rodzica. L(v 3 ) = λ. Weź lewe dziecko v 6 rodzica v 3. L(v 6 ) = λ. Wierzchołek v 6 nie ma dzieci. Wpisz v 6 na listę. L(v 6 ) = v 6. Powróć do v 3, wpisz v 3 na listę L(v 3 ) = v 6 v 3 Weź kolejne dziecko v 7 rodzica. L(v 3 ) = λ. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 78 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 L( ) = v 4 v 2 v 8 v 5 v 9 Weź kolejne dziecko v 3 rodzica. L(v 3 ) = λ. Weź lewe dziecko v 6 rodzica v 3. L(v 6 ) = λ. Wierzchołek v 6 nie ma dzieci. Wpisz v 6 na listę. L(v 6 ) = v 6. Wpisz v 3 na listę. L(v 3 ) = v 6 v 3. Weź kolejne dziecko v 7 rodzica. L(v 3 ) = λ. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 79 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 L( ) = v 4 v 2 v 8 v 5 v 9 Weź kolejne dziecko v 3 rodzica. L(v 3 ) = λ. Weź lewe dziecko v 6 rodzica v 3. L(v 6 ) = λ. Wierzchołek v 6 nie ma dzieci. Wpisz v 6 na listę. L(v 6 ) = v 6. Wpisz v 3 na listę. L(v 3 ) = v 6 v 3 Weź kolejne dziecko v 7 rodzica. L(v 7 ) = λ. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 80 / 107

Algorytm INORDER(v), przykład v 4 v 5 v 6 v 7 v 8 v 9 L( ) = v 4 v 2 v 8 v 5 v 9, L(v 3 ) = v 6 v 3 Wierzchołek v 7 nie ma dzieci. Wpisz v 7 na listę. L(v 7 ) = v 7. Dołącz L(v 7 ) nas końcu listy L(v 3 ). L(v 3 ) = v 6 v 3 v 7. Dołącz L(v 3 ) nas końcu listy L( ). L( ) = v 4 v 2 v 8 v 5 v 9 v 6 v 3 v 7. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 81 / 107

Etykietowanie drzewa Uwaga. Do uporządkowanego etykietowania (rodzice mają większe etykiety niż dzieci) wierzchołków drzewa binarnego z wyróżnionym korzeniem możemy zastosować algorytm podobny do POSTORDER. Zaczynamy i kończymy w korzeniu, stosujemy zasady: trzymaj się prawej oraz jak dojdziesz do liścia, to zawróć Różnica jest taka, że odwiedzając wierzchołek po raz ostatni zamiast wpisywać go na listę przypisujemy mu etykietę z kolejnym numerem. Oczywiście każdy liść odwiedzamy tylko raz (więc jest to odwiedzanie po raz ostatni). Przykład. Zaetykietujemy drzewo z poprzednich przykładów. (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 82 / 107

Etykietowanie drzewa, przykład v 4 v 5 v 6 v 7 v 8 v 9 0 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 83 / 107

Etykietowanie drzewa, przykład v 4 v 5 v 6 v 7 v 8 v 9 0 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 84 / 107

Etykietowanie drzewa, przykład v 4 v 5 v 6 v 7 v 8 v 9 0 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 85 / 107

Etykietowanie drzewa, przykład 1 v 5 v 6 v 7 v 8 v 9 0 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 86 / 107

Etykietowanie drzewa, przykład 1 v 5 v 6 v 7 v 8 v 9 0 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 87 / 107

Etykietowanie drzewa, przykład 1 v 5 v 6 v 7 v 8 v 9 0 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 88 / 107

Etykietowanie drzewa, przykład 1 v 5 v 6 v 7 v 8 v 9 0 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 89 / 107

Etykietowanie drzewa, przykład 1 v 5 v 6 v 7 v 8 2 0 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 90 / 107

Etykietowanie drzewa, przykład 1 v 5 v 6 v 7 v 8 2 0 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 91 / 107

Etykietowanie drzewa, przykład 1 v 5 v 6 v 7 v 8 2 0 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 92 / 107

Etykietowanie drzewa, przykład 1 v 5 v 6 v 7 v 8 2 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 93 / 107

Etykietowanie drzewa, przykład 1 4 v 6 v 7 v 8 2 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 94 / 107

Etykietowanie drzewa, przykład 5 v 3 1 4 v 6 v 7 v 8 2 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 95 / 107

Etykietowanie drzewa, przykład 5 v 3 1 4 v 6 v 7 v 8 2 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 96 / 107

Etykietowanie drzewa, przykład 5 v 3 1 4 v 6 v 7 v 8 2 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 97 / 107

Etykietowanie drzewa, przykład 5 v 3 1 4 v 6 v 7 v 8 2 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 98 / 107

Etykietowanie drzewa, przykład 5 v 3 1 4 6 v 7 v 8 2 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 99 / 107

Etykietowanie drzewa, przykład 5 v 3 1 4 6 v 7 v 8 2 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 100 / 107

Etykietowanie drzewa, przykład 5 v 3 1 4 6 v 7 v 8 2 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 101 / 107

Etykietowanie drzewa, przykład 5 v 3 1 4 6 7 v 8 2 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 102 / 107

Etykietowanie drzewa, przykład 5 v 3 1 4 6 7 v 8 2 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 103 / 107

Etykietowanie drzewa, przykład 5 v 3 1 4 6 7 v 8 2 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 104 / 107

Etykietowanie drzewa, przykład 5 v 3 1 4 6 7 8 2 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 105 / 107

Etykietowanie drzewa, przykład 5 9 1 4 6 7 8 2 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 106 / 107

Etykietowanie drzewa, przykład 10 5 9 1 4 6 7 8 2 3 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 107 / 107