72
Algorytmy i Struktury Danych. Drzewa poszukiwa ´ n binarnych. Bo˙ zena Wo´ zna-Szcze´ sniak [email protected] Jan Dlugosz University, Poland Wyklad 10 Bo˙ zena Wo´ zna-Szcze´ sniak (AJD) Algorytmy i Struktury Danych. Wyklad 10 1 / 47

Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ [email protected] Jan Długosz University, Poland

  • Upload
    others

  • View
    34

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Algorytmy i Struktury Danych.Drzewa poszukiwan binarnych.

Bozena [email protected]

Jan Długosz University, Poland

Wykład 10

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 1 / 47

Page 2: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Plan wykładu

Drzewiaste struktury danychDlaczego ich potrzebujemyPodstawowe definicjeDynamiczne realizacje

Drzewa poszukiwan binarnych (BST)DefinicjaOdwiedzanie wierzchołkówWyszukiwanie danego elementu, wyszukiwanie maksimum iminimumWstawianie nowego elementu do drzewaUsuwanie elementu z drzewa

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 2 / 47

Page 3: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Wstawianie i wyszukiwanie kluczy

Tablice nieposortowane

Tablice posortowane

Drzewa poszukiwan binarnych

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 3 / 47

Page 4: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Tablice nieposortowane

Operacja wstawiania na koniec – Złozonosc O(1)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 4 / 47

Page 5: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Tablice nieposortowane

Operacja wstawiania na koniec – Złozonosc O(1)

Operacja wstawiania na poczatek – Złozonosc O(n)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 4 / 47

Page 6: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Tablice nieposortowane

Operacja wstawiania na koniec – Złozonosc O(1)

Operacja wstawiania na poczatek – Złozonosc O(n)

Operacja wyszukiwania elementu (wyszukiwanie liniowe) –Złozonosc O(n)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 4 / 47

Page 7: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Tablice nieposortowane

Operacja wstawiania na koniec – Złozonosc O(1)

Operacja wstawiania na poczatek – Złozonosc O(n)

Operacja wyszukiwania elementu (wyszukiwanie liniowe) –Złozonosc O(n)

A moze jest cos lepszego ...

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 4 / 47

Page 8: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Tablice posortowane

Operacja wstawiania –równowazne sortowaniu przezwstawianie, złozonosc O(n2).

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 5 / 47

Page 9: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Tablice posortowane

Operacja wstawiania –równowazne sortowaniu przezwstawianie, złozonosc O(n2).

Operacja wyszukiwaniaelementu (wyszukiwaniebinarne) – ZłozonoscO(log(n))

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 5 / 47

Page 10: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Tablice posortowane

Operacja wstawiania –równowazne sortowaniu przezwstawianie, złozonosc O(n2).

Operacja wyszukiwaniaelementu (wyszukiwaniebinarne) – ZłozonoscO(log(n))

Algorytm bisekcji (Tab,n,x):1: i := 0; j := n − 1;2: while (j − i > 1) do3: m := (i + j)div2;4: if Tab[m] ≤ x then5: i := m;6: else7: j := m;8: end if9: end while

10: if Tab[i] = x then11: return true;12: else13: return false;14: end if

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 5 / 47

Page 11: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Tablice posortowane

Operacja wstawiania –równowazne sortowaniu przezwstawianie, złozonosc O(n2).

Operacja wyszukiwaniaelementu (wyszukiwaniebinarne) – ZłozonoscO(log(n))

Potrzebujemy czegoslepszego ...

Algorytm bisekcji (Tab,n,x):1: i := 0; j := n − 1;2: while (j − i > 1) do3: m := (i + j)div2;4: if Tab[m] ≤ x then5: i := m;6: else7: j := m;8: end if9: end while

10: if Tab[i] = x then11: return true;12: else13: return false;14: end if

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 5 / 47

Page 12: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewa

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 6 / 47

Page 13: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewa

Drzewa poszukiwan binarnych(BST)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 6 / 47

Page 14: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewa

Drzewa poszukiwan binarnych(BST)

Kopce

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 6 / 47

Page 15: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewa

Drzewa poszukiwan binarnych(BST)

Kopce

Drzewa AVL - nazwa AVLpochodzi od nazwiskrosyjskich matematyków:Gieorgij Adelson-Wielskij iJewgienij Łandis

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 6 / 47

Page 16: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewa

Drzewa poszukiwan binarnych(BST)

Kopce

Drzewa AVL - nazwa AVLpochodzi od nazwiskrosyjskich matematyków:Gieorgij Adelson-Wielskij iJewgienij Łandis

Drzewa Czerwono-Czarne

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 6 / 47

Page 17: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewa

Drzewa poszukiwan binarnych(BST)

Kopce

Drzewa AVL - nazwa AVLpochodzi od nazwiskrosyjskich matematyków:Gieorgij Adelson-Wielskij iJewgienij Łandis

Drzewa Czerwono-Czarne

B-drzewa

...

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 6 / 47

Page 18: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewa

DefinicjaDrzewem nazywamy spójny i acykliczny graf nieskierowany.

Graf jest spójny, gdy dowolne dwa wierzchołki sa połaczonedroga.

Graf jest acykliczny, jesli nie posiada cyklu.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 7 / 47

Page 19: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewa

DefinicjaDrzewem nazywamy spójny i acykliczny graf nieskierowany.

Graf jest spójny, gdy dowolne dwa wierzchołki sa połaczonedroga.

Graf jest acykliczny, jesli nie posiada cyklu.

Drzewo, w którym wyrózniony jest jeden, charakterystycznywierzchołek nazywamy drzewem z korzeniem .Korze n jest jedynym elementem drzewa, który nie posiadapoprzednika (rodzica). Dla kazdego innego wierzchołka okreslonyjest dokładnie jeden rodzic.Wierzchołki znajdujace sie bezposrednio pod danym wezłemnazywamy synami (lub dzie cmi) .Wierzchołki, które nie maja potomków nazywane sa li scmi .Jezeli liczba nastepników dla kazdego wierzchołka wynosi conajwyzej dwa, to takie drzewo nazywamy binarnym.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 7 / 47

Page 20: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewa

Zupełne drzewo binarne - Kazdy wezeł, z wyjatkiem lisci, madokładnie dwa nastepniki;

Drzewo poszukiwa n binarnych (BST) - Dla kazdego wezła (niebedacego lisciem) wszystkie wartosci przechowywane w lewympoddrzewie sa mniejsze od wartosci tego wezła, natomiastwszystkie wartosci przechowywane w prawym poddrzewie sawieksze od wartosci w tym wezle.

Kopiec (sterta) - Wartosci przechowywane w nastepnikachkazdego wezła sa mniejsze od wartosci w danym wezle (tzw.kopiec maksymalny) lub wartosci przechowywane w nastepnikachkazdego wezła sa wieksze od wartosci w danym wezle (tzw.kopiec minimalny). Drzewo jest szczelnie wypełniane(zrównowazone) od lewego poddrzewa

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 8 / 47

Page 21: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Zupełne drzewo binarne

1

2

4 5

3

6 7

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 9 / 47

Page 22: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewo poszukiwan binarnych

15

7

4

2 NIL

13

30

25

NIL 27

34

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 10 / 47

Page 23: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewo poszukiwan binarnych

2

NIL 3

NILL 4

NILL 5

NILL 6

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 11 / 47

Page 24: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewo poszukiwan binarnych

2

NIL 3

NILL 4

NILL 5

NILL 6

2

1 3

NILL 4

NILL 5

NILL 6

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 11 / 47

Page 25: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewo binarne, ale nie poszukiwan binarnych

2

NIL 3

NILL 0

NILL 5

NILL 6

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 12 / 47

Page 26: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewo binarne, ale nie poszukiwan binarnych

2

NIL 3

NILL 0

NILL 5

NILL 6

2

10 3

NILL 4

NILL 5

NILL 6

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 12 / 47

Page 27: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Kopiec (sterta)

1

2

4

9 10

3

6 NIL

5

7 8

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 13 / 47

Page 28: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewa

Dla kazdego drzewa mozna okreslic:

głeboko sc wierzchołka u - liczba wierzchołków, przez którenalezy przejsc od korzenia do wierzchołka u.

wysoko sc u - maksymalna liczba wierzchołków na drodze od udo pewnego liscia.

wysoko sc drzewa = głeboko sc = wysoko sc korzenia +1

sciezka z u do v- zbiór wierzchołków, przez które nalezy przejscz wierzchołka u do v .

droga = sciezka skierowana .

stopie n wierzchołka - liczba jego bezposrednich nastepników.

Stopie n drzewa - maksymalny stopien wierzchołka.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 14 / 47

Page 29: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewa

Drzewo AVL (1962 - Adelson-Velskii, Landis) - Drzewo BST jestdrzewem AVL wtedy, kiedy dla kazdego wierzchołka wysokoscidwóch jego poddrzew róznia sie o co najwyzej jeden poziom;Drzewo Czerwono-Czarne -

Sa to drzewa poszukiwan binarnychKazdy wezeł jest czerwony lub czarnyKorzen jest czarnyCzerwony wezeł ma zawsze czarnego ojcaIlosc czarnych wezłów na dowolnej sciezce od korzenia do lisciajest taka sama

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 15 / 47

Page 30: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewo AVL

15

7

4

2 NIL

13

30

25

NIL 27

34

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 16 / 47

Page 31: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Drzewo Czerwono-Czarne

11

2

1 7

5 8

14

NIL 15

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 17 / 47

Page 32: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Podstawowe operacje na strukturach drzewiastych

Przechodzenie po drzewie - metoda wszerz (BFS), metoda w głab(DFS)

Wyszukanie elementu w drzewie

Dodawanie nowego elementu do drzewa

Usuniecie wskazanego elementu z drzewa

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 18 / 47

Page 33: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Algorytm przechodzenia po drzewie binarnym

Cel:jednokrotne “odwiedzenie” kazdego elementu drzewa;linearyzacja drzewa;

Dane wej sciowe: dowiazanie do korzenia drzewa “Root”;Uwagi:

kolejnosc przejscia dowolna - liczba mozliwych sciezek w drzewie on wezłach wynosi n! (permutacja);najczesciej stosowane sposoby przegladania: wszerz i w głab;

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 19 / 47

Page 34: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Metody przechodzenia po drzewie binarnym: BFS(wszerz)

Przechodzenie wszerz polegana odwiedzaniu kolejnokazdego wezła odnajwyzszego (najnizszego)poziomu i przechodzeniukolejno po tych poziomach odgóry w dół (od dołu do góry) iod lewej do prawej lub odprawej do lewej.

15

7

4

2 NIL

13

30

25

NIL 27

34

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 20 / 47

Page 35: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Metody przechodzenia po drzewie binarnym: BFS(wszerz)

Przechodzenie wszerz polegana odwiedzaniu kolejnokazdego wezła odnajwyzszego (najnizszego)poziomu i przechodzeniukolejno po tych poziomach odgóry w dół (od dołu do góry) iod lewej do prawej lub odprawej do lewej.

Wynik: 15, 7, 30, 4, 13, 25, 34,2, 27.

15

7

4

2 NIL

13

30

25

NIL 27

34

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 20 / 47

Page 36: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Metody przechodzenia po drzewie binarnym: BFS(wszerz)

Przechodzenie wszerz polegana odwiedzaniu kolejnokazdego wezła odnajwyzszego (najnizszego)poziomu i przechodzeniukolejno po tych poziomach odgóry w dół (od dołu do góry) iod lewej do prawej lub odprawej do lewej.

Wynik: 15, 7, 30, 4, 13, 25, 34,2, 27.

Wynik: 27, 2, 34, 25, 13, 4, 30,7, 15.

15

7

4

2 NIL

13

30

25

NIL 27

34

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 20 / 47

Page 37: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

BFS - algorytm

Niech wezeł pewnego drzewa binarnego bedzie postaci:

typedef struct NODE {Typ data; // dane elementarnestruct NODE * left; // dowiazanie do lewego potomkastruct NODE * right; //dowiazanie do prawgo potomka

} Node;

Algorytm BFS(root):1: enqueuq(q, root); //q jest kolejka2: while not empty(q) do3: v := first(q); print(v .data); dequeuq(q);4: if not empty(v .left) then5: enqueuq(q, v .left);6: end if7: if not empty(v .right) then8: enqueuq(q, v .right);9: end if

10: end whileBozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 21 / 47

Page 38: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Metody przechodzenia po drzewie binarnym: DFS (wgłab)

Wersja “inorder” - LVR (porzadek symetryczny)Przejscie do lewego poddrzewa (L);Odwiedzenie wezła (V);Przejscie do prawego poddrzewa (R);

Wersja “preorder” - VLR (porzadek prosty)Odwiedzenie wezła (V);Przejscie do lewego poddrzewa (L);Przejscie do prawego poddrzewa (R);

Wersja “postorder” - LRV (porzadek odwrotny)Przejscie do lewego poddrzewa (L);Przejscie do prawego poddrzewa (R);Odwiedzenie wezła (V);

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 22 / 47

Page 39: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

DFS - przykład

15

7

4

2 NIL

13

30

25

NIL 27

34

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 23 / 47

Page 40: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

DFS - przykład

Inorder: 2, 4, 7, 13, 15, 25, 27,30, 34 .

15

7

4

2 NIL

13

30

25

NIL 27

34

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 23 / 47

Page 41: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

DFS - przykład

Inorder: 2, 4, 7, 13, 15, 25, 27,30, 34 .

Preorder: 15, 7, 4, 2, 13, 30,25, 27, 34.

15

7

4

2 NIL

13

30

25

NIL 27

34

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 23 / 47

Page 42: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

DFS - przykład

Inorder: 2, 4, 7, 13, 15, 25, 27,30, 34 .

Preorder: 15, 7, 4, 2, 13, 30,25, 27, 34.

Postorder: 2, 4, 13, 7, 27, 25,34, 30, 15.

15

7

4

2 NIL

13

30

25

NIL 27

34

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 23 / 47

Page 43: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

DFS - przykład

+

+

a *

b c

*

+

*

d e

f

g

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 24 / 47

Page 44: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

DFS - przykład

Inorder: a+b*c + (d*e+f)*g .

+

+

a *

b c

*

+

*

d e

f

g

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 24 / 47

Page 45: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

DFS - przykład

Inorder: a+b*c + (d*e+f)*g .

Postorder: abc*+de*f+g*+.

+

+

a *

b c

*

+

*

d e

f

g

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 24 / 47

Page 46: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

void preOrder(Node const* root);

void preOrder(const Node * localRoot){

if (localRoot != NULL) {printf("%ld ", localRoot->data);preOrder(localRoot->left);preOrder(localRoot->right);

}}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 25 / 47

Page 47: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

void inOrder(Node const* root);

void inOrder(const Node * localRoot){

if (localRoot != NULL) {inOrder(localRoot->left);printf("%ld ", localRoot->data);inOrder(localRoot->right);

}}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 26 / 47

Page 48: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

void postOrder(Node const* root);

void postOrder(const Node * localRoot){

if (localRoot != NULL) {postOrder(localRoot->left);postOrder(localRoot->right);printf("%ld ", localRoot->data);

}}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 27 / 47

Page 49: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Nierekurencyjny DFS - algorytm preOrder

Niech wezeł pewnego drzewa binarnego bedzie postaci:

typedef struct NODE {Typ data; // dane elementarnestruct NODE * left; // dowiazanie do lewego potomkastruct NODE * right; //dowiazanie do prawgo potomka

} Node;

Algorytm preOrder(root):1: push(q, root); //q jest stosem2: while not empty(q) do3: v := top(q); print(v .data); pop(q);4: if not empty(v .left) then5: push(q, v .left);6: end if7: if not empty(v .right) then8: push(q, v .right);9: end if

10: end whileBozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 28 / 47

Page 50: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Nierekurencyjny DFS - algorytm inOrder,implementacja w C

void IterativeInOrder(Node const * localRoot){Stack globalStack;initStack(&globalStack);while (true){

while(localRoot!=NULL){push(&globalStack, (Node * )localRoot);localRoot=localRoot->left;

}if (stackEmpty(&globalStack)) return;localRoot = (Node * ) top(&globalStack);printf("%ld ", localRoot->data);pop(&globalStack);localRoot=localRoot->right;

}}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 29 / 47

Page 51: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Nierekurencyjny DFS - algorytm postOrder,implementacja w C

void IterativePostOrder(Node const * localRoot){Stack globalStack; Node * v;initStack(&globalStack);while(!(stackEmpty(&globalStack))||(localRoot!=NULL )){

while(localRoot!=NULL){v = (Node * )localRoot;v->visit = false;push(&globalStack, v);localRoot = localRoot->left;

}v = (Node * )top(&globalStack);pop(&globalStack);if (!(v->visit)) {

v->visit = true;push(&globalStack, v);localRoot = v->right;

} else {printf("%ld ", v->data); localRoot=NULL;

}}

}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 30 / 47

Page 52: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Operacja wyszukiwania elementu w BST

Cel:uzyskanie dowiazania do wezła;mozna je interpretowac jako identyfikacje wezła;

Dane wej sciowe:dowiazanie do korzenia drzewa “Root”;Kryterium poszukiwania, np. wartosc danej elementarnej;

Uwagi:kolejnosc przeszukiwania dowolna - w skrajnym przypadku nalezyprzejrzec wszystkie wezły w drzewie (złozonosc O(n));stosowane rozwiazania: petla lub rekurencja;

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 31 / 47

Page 53: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Algorytm wyszukiwania elementu w BST

Niech wezeł pewnego drzewa binarnego bedzie postaci:

typedef struct NODE {Typ data; // dane elementarnestruct NODE * left; // dowiazanie do lewego potomkastruct NODE * right; //dowiazanie do prawgo potomka

} Node;

Algorytm find(root, value):1: while node! = NIL do2: if Value == node.data then3: return node;4: else if Value < node.data then5: node = node.left;6: else if Value > node.data then7: node = node.right;8: end if9: end while

10: return NIL;Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 32 / 47

Page 54: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Algorytm wyszukiwania elementu w BST - przykładposzukiwanie klucza 3

Korzen 6, Klucz < 6, Idz na lewo,

Wierzchołek 2, Klucz > 2, Idz naprawo,

Wierzchołek 4, Klucz < 4, Idz nalewo,

Wierzchołek 3, Klucz == 3. Stop

Czasy operacji: Porównanie: O(1)Poszukiwanie klucza: O(głebokosc),jesli klucz jest O(wysokosc drzewa),jesli klucza nie maZłozono sc czasowa: O(wysokoscdrzewa)

6

2

1 4

3 NIL

8

7 NIL

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 33 / 47

Page 55: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Node* find (int Value, Node* node) – wersja iteracyjna

Node* find (int Value, Node * node) {while (node) {

if (Value == node->data) return node;else {

if (Value < node->data) node = node->left;else

if (Value > node->data) node = node->right;}

}//end whilereturn NULL;

}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 34 / 47

Page 56: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Node* find (int Value, Node* node) – wersjarekurencyjna

Node* find (int Value, Node * node) {if (node) {

if (Value == node->data) return node;else

if (Value < node->data)return find (Value, node->left);

else if (Value > node->data)return find (Value, node->right);

} else return NULL;}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 35 / 47

Page 57: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

BST - wyszukiwanie elementu maksymalnego iminimalnego

Jezeli chcemy znalezc elementminimalny (maksymalny) wdrzewie to poruszamy siemaksymalnie w lewo (prawo). 15

7

4

2 NIL

13

30

25

NIL 27

34

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 36 / 47

Page 58: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

BST - wyszukiwanie elementu maksymalnego iminimalnego

Jezeli chcemy znalezc elementminimalny (maksymalny) wdrzewie to poruszamy siemaksymalnie w lewo (prawo).

Na rysunku obok niebieska drogato poszukiwanie minimum,czerwona - maksimum.

15

7

4

2 NIL

13

30

25

NIL 27

34

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 36 / 47

Page 59: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

BST - wyszukiwanie elementu maksymalnego iminimalnego

Jezeli chcemy znalezc elementminimalny (maksymalny) wdrzewie to poruszamy siemaksymalnie w lewo (prawo).

Na rysunku obok niebieska drogato poszukiwanie minimum,czerwona - maksimum.

Specyficzne rozmieszczenieelementów w drzewie sprawia, zeelement minimalny znajduje siezawsze w najbardziej“wysunietym na lewo” wezle, aelement maksymalny wnajbardziej “wysunietym naprawo” wezle drzewa.

15

7

4

2 NIL

13

30

25

NIL 27

34

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 36 / 47

Page 60: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Wstawienie nowego elementu do BST

Cel: dodanie nowego elementu do drzewa;Dane wej sciowe:

Dowiazanie do korzenia drzewa ‘Root’;Nowe dane elementarne;

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 37 / 47

Page 61: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Wstawienie nowego elementu do BST - idea

Utwórz element i ustal dane elementarne;Znajdz miejsce wstawienia elementu w drzewie:

Aby znalezc miejsce na nowy element w drzewie BST, topoczawszy od korzenia nalezy porównywac nowy element zwezłem i jezeli jest on mniejszy od wartosci przechowywanej w tymwezle to poruszac sie w lewo po drzewie, w przeciwnym wypadkuporuszac sie w prawo.Wedrujemy tak długo, az dojdziemy do miejsca, w którymnapotkany wskaznik do potomka w wezle bedzie wskazywał naNULL.

Wstaw nowy wezeł w wskazane miejsce, a wspomniany wyzejwskaznik ustaw tak, aby wskazywał na nowy wezeł.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 38 / 47

Page 62: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

void Insert (int Value, Node**next) - wersjarekurencyjna

void Insert (int Value, Node * * next) {if ( * next == NULL ) {

* next = (Node * )malloc(sizeof(Node));( * next)->left = NULL;

( * next)->right = NULL;( * next)->data = Value;

}else if (Value < ( * next)->data )

Insert( Value, ( * next)->left ) ;else if (Value > ( * next)->data )

Insert(Value, ( * next)->right );}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 39 / 47

Page 63: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Wstawienie nowego elementu do BST - idea

Wierzchołek 6, Klucz < 6, Idz nalewo,

Wierzchołek 2, Klucz > 2, Idz naprawo,

Wierzchołek 4, Klucz > 4, Idzprawo,

NULL, Wstaw 5.

Złozonosc czasowa: O(wysoko scdrzewa)

6

2

1 4

3 5

8

7 NIL

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 40 / 47

Page 64: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

void insert(Node** tree, int data)

void insert(Node ** tree, int data) {Node* newNode = malloc(sizeof(Node));newNode->data = data;newNode->left = newNode->right = NULL;if ( * tree == NULL) * tree = newNode;else {

Node* curr = * tree; // zaczynamy poszukiwania od korzeniaNode* parent;while(true) {

parent = curr;if (data < curr->data) {

curr = curr->left;if (curr == NULL) {parent->left = newNode; return;}

} else {curr = curr->right;if (curr == NULL) {parent->right = newNode; return;}}

} // while}//else

}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 41 / 47

Page 65: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Usuwanie danego elementu do BST - idea

Cel: Usuniecie wezła z drzewa;Dane wej sciowe:

Dowiazanie do korzenia drzewa ‘Root’;Opis elementu usuwanego, np. wartosc danej elementarnej;

Uwagi:Przypadek 1: wezeł jest lisciem;Przypadek 2: wezeł ma jednego potomka;Przypadek 3: wezeł ma dwóch potomków;

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 42 / 47

Page 66: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Przypadek 1: wezeł jest lisciem;

Usuwany wezeł nie mapotomstwa, np. wezeł 5.

Jest to najprostsza sytuacja.Nalezy usunac ten element(zwolnic pamiec) i zadbac o to,aby jego rodzic wskazywał naNULL.

Złozonosc czasowa:O(wysoko sc drzewa)

6

2

1 4

3 5

8

7 NIL

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 43 / 47

Page 67: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Przypadek 2: wezeł ma jednego potomka;

Usuwany wezeł posiada jednegopotomka, np. 8

Nalezy tutaj zadbac (opróczzwolnienia pamieci) o to, abyrodzic usuwanego elementuwskazywał teraz zamiast nausuwany element, na jegopotomka .

Złozonosc czasowa:O(wysoko sc drzewa)

6

2

1 4

3 5

8

7 NIL

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 44 / 47

Page 68: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Przypadek 3: wezeł ma dwóch potomków;

Aby usunac taki wezełposiadajacy dwóch potomków,nalezy zamienic wartosc z tegowezła z wartoscia minimalna wprawym poddrzewie usuwanegowezła lub z wartosciamaksymalna w lewympoddrzewie. Nastepnie, usuwamyelement minimalny w prawympoddrzewie, ewentualniemaksymalny w lewympoddrzewie.

Po takiej zamianie elementminimalny (maksymalny) niebedzie miał potomstwa lub conajwyzej bedzie miał jedynieprawego (lewego) syna.

Złozonosc czasowa:O(wysoko sc drzewa)

Usuwany wezeł: 6

6

2

1 4

3 5

8

7 NIL

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 45 / 47

Page 69: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Usuwany wezeł: 6

Usuwany wezeł: 6

6

2

1 4

3 5

8

7 NIL

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 46 / 47

Page 70: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Usuwany wezeł: 6

Usuwany wezeł: 6

6

2

1 4

3 5

8

7 NIL

Najpierw szukamy elementumaksymalnego w lewympoddrzewie. Jest nim 5.

6

2

1 4

3 5

8

7 NIL

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 46 / 47

Page 71: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Usuwany wezeł: 6

Nastepnie zamieniamy usuwanyelement (6) ze znalezionym.elementem maksymalnym wlewym poddrzewie (5).

6->5

2

1 4

3 5->6

8

7 NIL

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 47 / 47

Page 72: Algorytmy i Struktury Danych. - Wozna · Algorytmy i Struktury Danych. Drzewa poszukiwan binarnych.´ Bozena Woz´na-Szcze˙ sniak´ bwozna@gmail.com Jan Długosz University, Poland

Usuwany wezeł: 6

Nastepnie zamieniamy usuwanyelement (6) ze znalezionym.elementem maksymalnym wlewym poddrzewie (5).

6->5

2

1 4

3 5->6

8

7 NIL

Usuwamy wezeł, który zawierałelement maksymalny (5) w lewympoddrzewie. Teraz wezeł tenzawiera wartosc 6.

5

2

1 4

3 6

8

7 NIL

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 10 47 / 47