diff --git a/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 28.txt b/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 28.txt new file mode 100644 index 0000000..ec0dfbb --- /dev/null +++ b/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 28.txt @@ -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. \ No newline at end of file diff --git a/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/Fa.png b/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/Fa.png new file mode 100644 index 0000000..3086231 Binary files /dev/null and b/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/Fa.png differ