Számoljuk meg rekurzív függvénnyel egy bináris fa leveleit!
Rekurzív függvény Olyan függvény, mely meghívja önmagát vagy egy másik függvényt, véges sokszor. Minden rekurzív függvény elágazással kezdődik, melyben eldől, hogy újból meghívja önmagát (vagy egy másik függvényt) vagy kilép a „ciklusból”.
Példa egy bináris fa láncolt ábrázolására 1 2 3 4 5 6 7 8 9
A bináris fa levelei, olyan pontok, melyeknek nincsenek gyerekei 1 2 3 4 5 6 7 8 9
A levelek megszámolása A rekurzív függvény stuktogramja:
A fügvény müködése A függvény egy bináris fát kap paraméternek, és ennek a fának számolja meg a leveleit. A „t” jelöli a fát
Az első lépésben megvizsgálja, hogy a paraméterül kapott bináris fa üres-e. Ha a fa üres, akkor a „return 0” utassál tér vissza a függvény (nem lehetnek gyerekei). Ha a fa nem üres, akkor továbblép, és megvizsgálja, hogy az adott csúcsnak vannak-e gyerekei.
Ha a gyökérnek, nincs jobb, illetve bal gyereke, akkor a függvény 1-es értékel tér vissza, ami azt jelenti, hogy a fa csak a gyökérből áll.
Ha a csúcsnak van jobb vagy bal gyereke, akkor meghívódik (ez) a Levszám függvény, a csúcs azon gyerekére, amely éppen létezik. A csúcs gyerekei: bal(t), jobb(t) Miközben a levelek számát összeadja.
A példában megadott fára a függvény 4es értékkel tér vissza, mivel a fa gyerekei a 7, 5, 8, 9 lesznek. 1 2 3 4 5 6 7 8 9
Először a gyökeret vizsgálja, ami a mi esetünkben 1. Utána megvizsgálja a gyerekeit és azok gyerekeit. Mindez addig folytatódik, amig el nem ér például a 7-es csúcshoz, ahol már nem tud továbblépni, ekkor növeli a levélszámot és visszalép. Ez mindaddig megy míg be nem jártuk a teljes fát.
Hasonló függvény, mely alkalmas egy bináris fa leveleinek megszámolására. Müködési elve hasonló az előbbihez.
A fa bejárása külömböző bejárásokkal Ezek segítségével több információt is megtudhatunk a fáról: Preorder Inorder Postorder Pl: a leveleit is ki lehet iratni
Preorder bejárással kiírva a fa elemei: A bejárás stuktogramja: 1, 2, 4, 7, 5, 3, 6, 8, 9. A bejárás stuktogramja:
Inorder bejárással kiírva a fa elemei: A bejárás stuktogramja: 4, 7, 2, 5, 1, 3, 8, 6, 9. A bejárás stuktogramja:
Postorder bejárással kiírva a fa elemei: A bejárás stuktogramja: 7, 4, 5, 2, 8, 9, 6, 3, 1. A bejárás stuktogramja:
Vége