Tusjak óra_2024. 11. 28. (Fák, rekurzió)

This commit is contained in:
Tóth Ádám 2024-11-29 10:53:18 +01:00
parent fb48452312
commit 601b2765d3
2 changed files with 35 additions and 0 deletions

View File

@ -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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB