Tusjak óra_2024. 11. 29. (Bináris fa, bejárások)

This commit is contained in:
Tóth Ádám 2024-11-29 10:54:59 +01:00
parent 601b2765d3
commit 71438b75dc

View File

@ -0,0 +1,54 @@
Csomopont osztály
- Az egyes csomópontok adatait Adat és gyermekeit Gyermekek tárolja.
- A Gyermekek egy lista, amely tetszőleges számú gyermek csomópontot tartalmazhat.
Fa osztály
- A fa gyökerét Gyoker tarolja.
- Tartalmaz egy rekurzív mélységi bejárás metódust MelysegiBejaras, amely a gyökérből kiindulva végigmegy az összes csomóponton.
- A keresés Keres szintén rekurzív, és megvizsgálja, hogy egy adott adat szerepel-e a fában.
Program osztály
- Egy családfa példáját mutatja be, amelyben a "Nagyszülő" a gyökércsomó.
- Gyermekeket és unokákat ad a fához
- Mélységi bejárást végez, majd keres bizonyos csomópontokat.
Bináris fa
Olyan fa, ahol minden csúcsnak legfeljebb két leszármazottja lehet.
Szigorú értelemben vett bináris fáról beszélünk, ha a bináris fában minden adatelemnek 0 vagy 2 rákövetkezője van.
Láncolt ábrázolás
A bináris fa láncolt ábrázolásban mutatók/indexek valósítják meg a rákövetkezési és megelőzési relációkat.
Bináris fával végezhető műveletek
- Létrehozás: üres fa
- Bővítés: egy elemmel vagy egy részfával, általában levélelemnél
- Törlés: részfát vagy egy elemet utóbbi esetben a fát a lgtöbb esetben újra kell szervezni (hogy továbbra is fa maradjon)
- Csere: megengedett
- Rendezés: nincs
- Keresés, elérés és feldolgozás: a bejárás algoritmusa alapján
- Bejárás: szokás szerint olyan algoritmus, amelynek segítségével a bináris fa elemeit leképezzük egy sorra (preorder, inorder vagy postorder módon)
Bináris fa bejárása
Bejárás: az adatszerkezet valamennyi elemének egyszeri elérése (feldolgozása)
A fa bejárása a pontjainak módszeres vizsgálatát jelenti, amelynek során minden pontot egyszer és csakis egyszer látogatunk meg (gyökérvizit).
Mivel a láncolt lsitával ellentétben egy elemből több irányba is lehet lépni, többféle bejárás is elképzelhető.
A csomópontokban található adatok (tartalom, bal, jobb) feldolgozásának sorrendje alapján három fő változat különböztethető meg (ezen belül a bal és jobb megcserélhető):
- Preorder bejárás
- Inorder bejárás
- Postorder bejárás
Gyökérből legfeljebb két részfa ágazik: baloldali és jobboldali részfa
Bejárása
Gyökérkezdő (preorder)
a b d c e g h i j f
Gyökérközepű (inorder)
d b a g e i h j c f
Gyökérvégző (postorder)
d b g i j h e f c a