Tusjak óra_2024. 11. 28. (Fák, rekurzió)
This commit is contained in:
parent
fb48452312
commit
601b2765d3
|
@ -0,0 +1,35 @@
|
|||
Fa (fák)
|
||||
A fa egy hierarchikus adatszerkezetet, amelyben egy elmnek akár több rákövetkezője, de legfeljebb egy megelőzője lehet.
|
||||
|
||||
- Minden elemeknek több rákövetkezője, gyereke, leszármazottja lehet.
|
||||
- A gyökérelem a fa azon eleme, amelynek nincs megelőzője, szülője. Az üres fa kivételével minden fának van gyökéreleme. A gyökérelemen kívül az összes elemnek pontosan egy megelőzője van.
|
||||
- Minden elem pontosan egy úton érhető el a gyökérelemtől.
|
||||
- Út: az adatelemnek olyan sorozata, ahol az egymást követő elemek egymásnak rákövetkezői, leszármazottjai. Az út hosszán az útban található élek számát értjük.
|
||||
- Levél: a fa azon elemei, amelyeknek nincs rákövetkezőjük.
|
||||
- Belső csúcs: a fa nem levél elemei.
|
||||
- A fákkal kapcsolatban beszélhetünk szintekről, egy elem szintje megegyezik a gyökérelemtől vett távolságával. A nulladik szinten a gyökérelem van, az első szinten a gyökérelem rákövetkezői, stb.
|
||||
- A maximális szintszámot a fa magasságának vagy mélységének nevezzük.
|
||||
- Minden közbenső elem egy részfa gyökereként tekinthető, így a fa részfákra bontható. Tehát a fát lehet rekurzívan is definiálni, azaz a fa áll egy gyökérelemből és a leszármazottai részfáiból.
|
||||
- Ha egy elemnek nincs utódja, akkor szélső elemnek vagy levélnek, a többi csúcsot belső elemnek, vagy elágazási pontnak nevezzük.
|
||||
- Erdőnek nevezünk néhány, (esetleg 0) diszjunkt fából álló halmazt: Másképp, erdőt kapunk, ha egy fából elhagyjuk a gyökeret. Egy erdőhöz egy pontot adva fát adunk.
|
||||
|
||||
|
||||
Rekurzió
|
||||
Rekurzív egy függvény, ha a függvény részszámításaihoz önmagát hívja meg.
|
||||
|
||||
Egy feladat rekurzív, ha a feladat megoldásához vezető lépések során:
|
||||
- találunk egy legegyszerűbb esetet, melyben a megoldás magától értetődik
|
||||
- találunk egy olyan ismételt egyszerűsítési folyamatot, mely alapján véges lépésben eljuthatunk a legegyszerűbb esethez. Minden egyes lépésnél feltételezzük, hogy a következő, egyszerűbb esetnek már megvan a megoldása.
|
||||
|
||||
|
||||
Rekurzív eljárás, függvény
|
||||
Egy metódust (eljárást vagy függvényt) rekurzívnak nevezünk, ha meghívja saját magát.
|
||||
- Közvetlen rekuzió: a metódust közvetlenül saját magát hívja meg. Pl. r1 metófus hívja az r1-esetet
|
||||
- Közvetett rekuzió: a metódus csak közvetve hívja meg magát egy másik metódus hívásán keresztül. Pl. r1 hívja r2-t, r2 pedig r1-et.
|
||||
|
||||
Egy rekurzív metódusban szerepelnie kell:
|
||||
- valaminek, ami a hívások során állandóan változik, és elvileg elérhet egy küszöböt.
|
||||
- egy olyan utasításnak, mely ezt a valamit a küszöb felé viszi.
|
||||
- egy leállító feltételnek, mely arról a bizonyos valamiről eldönti, elérte-e a küszöböt. Ha igen, akkor nem történik több rekurzív hívás.
|
||||
|
||||
Az alábbi példa egy általános fa adatszerkezetet mutat be, amelyben egy csomópont több gyermekkel rendelkezhet. A fa alapvető működését mutatjuk be, beleértve a csomópontok hozzáadását, a fa bejárását és egy egyszerű keresési műveletet.
|
BIN
Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/Fa.png
Normal file
BIN
Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/Fa.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
Loading…
Reference in New Issue
Block a user