![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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/31.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/32.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/34.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/35.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/36.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/37.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/38.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/39.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/40.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/41.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/42.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/43.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/44.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/45.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/46.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/47.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/48.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/49.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/50.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/51.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/52.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/53.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/54.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/55.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/56.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/57.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/58.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/59.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/60.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/61.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/62.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/63.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/64.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/65.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/66.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/67.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/68.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/69.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/70.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/71.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062303/60ffb8640334f757931e4705/html5/thumbnails/72.jpg)
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