Keresőfák�2022.10.25
Ismétlés
Az adatszerkezetek
Az adatszerkezet adatok tárolására és szervezésére szolgáló módszer (konstrukció), amely lehetővé teszi a(z adatokhoz való) hatékony hozzáférést és (a) módosításokat.
Tanult absztrakt adatszerkezetek:
Láncolt listák
Minden elem egy adatból és egy (vagy több) mutatóból áll.
A mérete futás során módosítható.
Verem
Sor
A sor egy FIFO (first in, first out) adatszerkezet.
Két műveletet támogat:
Prioritási sor
Absztrakt adatszerkezet, melyben az elemeket prioritásuk szerint tároljuk
Három műveletet támogat:
Feladat
A kupac (heap) egy hatékony megvalósítása a prioritási sor absztrakt adatszerkezetnek.
A kupac egy bináris fa, amelynek minden csúcsa legalább akkora, mint gyerekei → maximális elem a gyökérben van
Kupac
Beszúrás
13
Kupac
Beszúrás
13
Kupac
Beszúrás
43
Kupac
Beszúrás
43
Kupac
Beszúrás
31
43
Kupac
Beszúrás
31
42
43
Kupac
Törlés
44
Kupac
Törlés
44
44
14
Kupac
Törlés
44
44
14
Kupac
Törlés
44
14
?
?
Kupac
Törlés
44
42
14
Kupac
Törlés
44
42
?
?
14
Kupac
Törlés
44
42
33
14
Kupac
Törlés
44
42
33
14
?
?
Kupac
Törlés
44
42
33
26
14
Kupac
Időigény
O(1) max/min keresés
O(log n) beszúrás
O(log n) törlés
Kupac
Kupac
Hogyan működik a Kupacrendezés eljárás az A = 15, 3, 12, 5, 17, 7, 2, 18, 24 tömbön?
15
17
12
5
3
24
18
2
7
15 | 3 | 12 | 5 | 17 | 7 | 2 | 18 | 24 |
Kupac
15
17
12
5
3
24
18
2
7
15 | 3 | 12 | 5 | 17 | 7 | 2 | 18 | 24 |
Kupac
15
17
12
5
3
24
18
2
7
15 | 3 | 12 | 5 | 17 | 7 | 2 | 18 | 24 |
?
?
Kupac
15
17
12
24
3
5
18
2
7
15 | 3 | 12 | 24 | 17 | 7 | 2 | 18 | 5 |
24
5
Kupac
15
17
12
24
3
5
18
2
7
15 | 3 | 12 | 24 | 17 | 7 | 2 | 18 | 5 |
?
?
Kupac
15
17
12
24
3
5
18
2
7
15 | 3 | 12 | 24 | 17 | 7 | 2 | 18 | 5 |
?
?
Kupac
15
17
12
3
24
5
18
2
7
15 | 24 | 12 | 3 | 17 | 7 | 2 | 18 | 5 |
24
3
Kupac
15
17
12
3
24
5
18
2
7
15 | 24 | 12 | 3 | 17 | 7 | 2 | 18 | 5 |
?
?
Kupac
15
17
12
18
24
5
3
2
7
15 | 24 | 12 | 18 | 17 | 7 | 2 | 3 | 5 |
18
3
Kupac
15
17
12
18
24
5
3
2
7
15 | 24 | 12 | 18 | 17 | 7 | 2 | 3 | 5 |
?
?
Kupac
24
17
12
18
15
5
3
2
7
24 | 15 | 12 | 18 | 17 | 7 | 2 | 3 | 5 |
Kupac
24
17
12
18
15
5
3
2
7
24 | 15 | 12 | 18 | 17 | 7 | 2 | 3 | 5 |
?
?
Kupac
24
17
12
15
18
5
3
2
7
24 | 18 | 12 | 15 | 17 | 7 | 2 | 3 | 5 |
Kupac
24
17
12
15
18
5
3
2
7
24 | 18 | 12 | 15 | 17 | 7 | 2 | 3 | 5 |
Kupac
24
17
12
15
18
5
3
2
7
24 | 18 | 12 | 15 | 17 | 7 | 2 | 3 | 5 |
Kupac
5
17
12
15
18
24
3
2
7
5 | 18 | 12 | 15 | 17 | 7 | 2 | 3 | 24 |
24
5
Kupac
5
17
12
15
18
24
3
2
7
5 | 18 | 12 | 15 | 17 | 7 | 2 | 3 | 24 |
Kupac
5
17
12
15
18
24
3
2
7
5 | 18 | 12 | 15 | 17 | 7 | 2 | 3 | 24 |
?
?
Kupac
18
17
12
15
5
24
3
2
7
18 | 5 | 12 | 15 | 17 | 7 | 2 | 3 | 24 |
Kupac
18
17
12
15
5
24
3
2
7
18 | 5 | 12 | 15 | 17 | 7 | 2 | 3 | 24 |
Kupac
18
17
12
15
5
24
3
2
7
18 | 5 | 12 | 15 | 17 | 7 | 2 | 3 | 24 |
?
?
Kupac
18
5
12
15
17
24
3
2
7
18 | 17 | 12 | 15 | 5 | 7 | 2 | 3 | 24 |
Kupac
18
5
12
15
17
24
3
2
7
18 | 17 | 12 | 15 | 5 | 7 | 2 | 3 | 24 |
Kupac
18
5
12
15
17
24
3
2
7
18 | 17 | 12 | 15 | 5 | 7 | 2 | 3 | 24 |
Kupac
3
5
12
15
17
24
18
2
7
3 | 17 | 12 | 15 | 5 | 7 | 2 | 18 | 24 |
Kupac
3
5
12
15
17
24
18
2
7
3 | 17 | 12 | 15 | 5 | 7 | 2 | 18 | 24 |
?
?
Kupac
17
5
12
15
3
24
18
2
7
17 | 3 | 12 | 15 | 5 | 7 | 2 | 18 | 24 |
Kupac
17
5
12
15
3
24
18
2
7
17 | 3 | 12 | 15 | 5 | 7 | 2 | 18 | 24 |
?
?
Kupac
17
5
12
3
15
24
18
2
7
17 | 15 | 12 | 3 | 5 | 7 | 2 | 18 | 24 |
Kupac
17
5
12
3
15
24
18
2
7
17 | 15 | 12 | 3 | 5 | 7 | 2 | 18 | 24 |
Kupac
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Kupac
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
N elem * a törlés (újra rendezés) idő
n*log n
Hasonló mint a BST
Keresőfák
Keresőfák
Fa: összefüggő, körmentes gráf, melyre igaz, hogy:
- (Általában) egy gyökér csúcsa van, melynek 0 vagy több részfája van
- Pontosan egy út vezet bármely két csúcsa között
- A gyökéren kívül minden csúcsnak pontosan egy szülője van
Fák számítógépes reprezentációja
gyerek éllista
első fiú, apa, testvér
bináris fa
…
szülő
gyerek1
gyerekk
apa
első fiú
testvér
szülő
bal
jobb
Keresőfák
Bináris fa: minden csúcsnak legfeljebb 2 gyereke van
Keresőfák
• Teljes (full) bináris fa: olyan bináris fa, ahol minden szint teljesen ki van töltve
• Majdnem teljes (complete) bináris fa: olyan bináris fa, ahol maximum a legalsó szint nincs teljesen kitöltve, csak balról jobbra haladva kitöltött néhány elemig
Keresőfák
Bináris fa: minden csúcsnak legfeljebb 2 gyereke van
• Kiegyensúlyozott bináris fa: olyan fa, ahol minden csúcs gyerekeinek részfáinak magassága maximum eggyel tér el.
Keresőfák
Hány éle van egy fának, ha n csúcsa van?
Keresőfák
A fa egy tulajdonságai:
1
3
8
4
5
6
7
2
9
10
11
Mélység:
1
2
3
A 3. elem magassága: 2
Keresőfák
Elemi műveletek keresőfákban (példák később):
Keres
Min/max
Következő (nagyság szerint)
Beszúr
Töröl (levél, egy gyerek, két gyerek)
Fontos: fa magassága!!!
1
Keresőfák
1
Keresőfák
1
Bináris keresés�
Probléma:
Bináris keresés�
Bináris keresőfa�
Bináris kereső fa felépítése
Bináris kereső fa felbejárása
https://visualgo.net/en/bst
Legkisebb legnagyobb elem
Melyik a fa minimális, maximális eleme?
Legkisebb legnagyobb elem
Legkisebb legnagyobb elem
Feladat Szúrjuk be az előző keresőfába az 5 és 22 értékeket
Legkisebb legnagyobb elem
Feladat Szúrjuk be az előző keresőfába az 5 és 22 értékeket
Legkisebb legnagyobb elem
Feladat: Töröljük az előző feladatban beszúrások után kapott fából a 5,22, 6 elemeket
Legkisebb legnagyobb elem
Feladat: Töröljük az előző feladatban beszúrások után kapott fából a 5,22, 6 elemeket
Legkisebb legnagyobb elem
Feladat: Töröljük az előző feladatban beszúrások után kapott fából a 5,22, 6 elemeket
?
Legkisebb legnagyobb elem
Feladat: Töröljük az előző feladatban beszúrások után kapott fából a 5,22, 6 elemeket
Legkisebb legnagyobb elem
Feladat: Töröljük az előző feladatban beszúrások után kapott fából a 5,22, 6 elemeket
Legkisebb legnagyobb elem
Feladat: Töröljük az előző feladatban beszúrások után kapott fából a 5,22, 6 elemeket
Elem törlése a BST-ből
Elem törlése a BST-ből
Elem törlése a BST-ből
Törlés a fából
Törlés a fából
Feladat
Feladat
Feladat
A mélység megállapítása
A mélység megállapítása
Elsőfiú-testvér ábrázolás
Adjunk olyan rekurzív függvényeljárást, amelyik kiszámítja a fa leveleinek számát! A fa elsőfiú-testvér ábrázolású! (Left-Child Right-Sibling Representation)
Elsőfiú-testvér ábrázolás
Adjunk olyan rekurzív függvényeljárást, amelyik kiszámítja a fa leveleinek számát! A fa elsőfiú-testvér ábrázolású! (Left-Child Right-Sibling Representation)
Kapcsolati tömb ábrázolás
Olvasni való
Fa rajzoló : http://btv.melezinek.cz/binary-search-tree.html
http://www.inf.u-szeged.hu/~rfarkas/Alga19/6_KeresoFak.pptx
http://www.inf.u-szeged.hu/~kgelle/sites/default/files/upload/alga-gyak-07_0.pdf
http://www.informatom.hu/sze/01/LGB_SZ001/Cormen-Lieserson-Rivest-Stein.-.Uj.algoritmusok.pdf
http://www.inf.u-szeged.hu/~tnemeth/jegyz/adatszerk_java.pdf