Fák, bináris fák INFOÉRA Ez így 60 perc.

Slides:



Advertisements
Hasonló előadás
Programozási alapismeretek 6. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 6.2/  Rekordok/struktúrák.
Advertisements

HIKGHB Németh Gábor LUF9NV Simon Attila. A programozás alapjai előadás Híradástechnikai Tanszék.
Algebrai specifikációk Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
INFOÉRA Kombinatorikai algoritmusok (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
INFOÉRA 2006 Kombinatorika
Algoritmizálás, adatmodellezés tanítása 4. előadás
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
AVL-fa építése.
Minimális költségű feszítőfák
Programozási alapismeretek 4. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 4.2/  A szöveg A szöveg.
Programozási alapismeretek 3. előadás
Programozási alapismeretek 13. előadás. ELTE Érdekességek - kombinatorika  Az iskola bejáratánál N lépcsőfok van. Egyszerre maximum K fokot tudunk lépni,
Programozási alapismeretek 10. előadás
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Programozási alapismeretek 12. előadás. ELTE  Tapasztalatok a rendezésről Tapasztalatok a rendezésről  Keresés rendezett sorozatban Keresés rendezett.
Készítette: Pető László
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Fák, bináris fák INFOÉRA Ez így 60 perc.
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Keresés Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 8.1/ Kiválogatás Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 10.1/ Összegzés mátrixra Feladat: Egy mátrix elemeinek összege.
Számoljuk meg rekurzív függvénnyel egy bináris fa leveleit!
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Sorozatszámítás Specifikáció (a végleges) :  Bemenet:
ELTE Szlávi-Zsakó: Programozási alapismeretek Szlávi-Zsakó: Programozási alapismeretek 3. 1/
2. A rekurzió mint típuskonstrukció Szlávi Péter ELTE Média- és Oktatásinformatikai Tanszék
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Alapszint 2.  Készíts makrót, ami a kijelölt cellákat egybenyitja, a tartalmat vízszintesen és függőlegesen középre igazítja és 12 pontos betűméretűre.
Gráfelmélet: Fák.
Adatszerkezetek 1. előadás
Hierarchikus adatszerkezetek
Fák.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Nevezetes algoritmusok
Copyright, 1999 © Szlávi Péter Sor típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Algoritmizálás, adatmodellezés tanítása 8. előadás.
BFák Kiegyensúlyozott keresőfák Hatékonyság: O(lg(n)), de a nagy fokszám miatt igen alacsony szorzótényezővel Alkalmazás: Lemezen tárolt adatbázisoknál.
BINÁRIS FA Definició: A fa olyanösszefüggő gráf, amelyben nincs kör
Algoritmizálás, adatmodellezés tanítása 2. előadás.
Gráfok ábrázolása teljesen láncoltan
INFOÉRA 2006 Nagypontosságú aritmetika I.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
Algoritmizálás, adatmodellezés
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Bináris kereső fák Itterátorok.
Programozási alapismeretek 11. előadás
Fák, bináris fák INFOÉRA Ez így 60 perc.
Algoritmusok és adatszerkezetek
INFOÉRA 2006 Nagypontosságú aritmetika II.
(Bináris) Kupac (heap) adattípus
INFOÉRA 2006 Nagypontosságú aritmetika III.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
BFák Kiegyensúlyozott keresőfák
Logikai programozás 6..
INFOÉRA Gráfok, gráfalgoritmusok II. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) IDE KELL: prioritási sor kupaccal. Juhász.
Halmazműveletek.
Piros-fekete fák Beszúrás, ill. törléskor a fa elveszítheti az egyensúlyát. A piros-fekete fák: az egyensúly megtartását biztosítják. +1 bit információ.
INFOÉRA Gráfok, gráfalgoritmusok III. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
Algoritmusok és Adatszerkezetek I.
INFOÉRA Halmazok Juhász István-Zsakó László: Informatikai képzések a ELTE-n.
Informatikai gyakorlatok 11. évfolyam
Algoritmusok és Adatszerkezetek I.
Fák, bináris fák INFOÉRA Ez így 60 perc.
Programozási tételek.
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
INFOÉRA 2006 Szövegfeldolgozás III.
Szövegfeldolgozás II. INFOÉRA perc kell még hozzá
Előadás másolata:

Fák, bináris fák INFOÉRA 2006 2006.11.18 Ez így 60 perc. Juhász István-Zsakó László: Informatikai képzések a ELTE-n

Bináris fa A fa (bináris fa) rekurzív adatszerkezet: INFOÉRA 2006 2006.11.18 Bináris fa A fa (bináris fa) rekurzív adatszerkezet:  ÜresFa BinFa:=   Rekord(Elem,BinFa,BinFa)  ÜresFa Fa :=   Rekord(Elem,Fák) Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 2

Bináris fa A fa (bináris fa) rekurzív adatszerkezet ábrázolása: INFOÉRA 2006 2006.11.18 Bináris fa A fa (bináris fa) rekurzív adatszerkezet ábrázolása: Típus TBinfa=Rekord (elem: TElem bal,jobb: TBinfa) Típus TFa=Rekord (elem: TElem ágak: Sorozat(TFa)) A fa elemek sokasága, ezért szükség lesz: kezdő- (gyökér) elemre aktuális elemre Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 3

Bináris fa – dinamikus láncolás INFOÉRA 2006 2006.11.18 Bináris fa – dinamikus láncolás A Bináris fa rekurzív adatszerkezet műveletei: Üres:Binfa üres?(Binfa):Logikai egyeleműfa(Elem):Binfa Balrailleszt(Binfa,Binfa):Binfa  {NemDef} előfeltétel: Binfa nem üres, a bal része üres Jobbrailleszt(Binfa,Binfa):Binfa  {NemDef} előfeltétel: Binfa nem üres, a jobb része üres gyökérelem(Binfa):Elem  {NemDef} előfeltétel: Binfa nem üres Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 4

Bináris fa – dinamikus láncolás INFOÉRA 2006 2006.11.18 Bináris fa – dinamikus láncolás A Bináris fa rekurzív adatszerkezet műveletei: balgyerek(Binfa):Binfa  {Nemdef} előfeltétel: Binfa nem üres jobbgyerek(Binfa):Binfa  {Nemdef} előfeltétel: Binfa nem üres gyökérmódosít(Binfa,Elem):Binfa  {Nemdef} előfeltétel: Binfa nem üres Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 5

Bináris fa – dinamikus láncolás INFOÉRA 2006 2006.11.18 Bináris fa – dinamikus láncolás A Bináris fa rekurzív adatszerkezet műveletei: Üres(bf): bf:=sehova Eljárás vége. üres?(bf): üres?:=bf=sehova Függvény vége. egyeleműfa(Elem): Lefoglal(bf,(Elem,sehova,sehova)) egyeleműfa:=bf Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 6

Bináris fa – dinamikus láncolás INFOÉRA 2006 2006.11.18 Bináris fa – dinamikus láncolás A Bináris fa rekurzív adatszerkezet műveletei: Balrailleszt(bf,rf): bf->bal:=rf Eljárás vége. Jobbrailleszt(bf,rf): bf->jobb:=rf gyökérelem(bf): gyökérelem:=bf->elem Függvény vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 7

Bináris fa – dinamikus láncolás INFOÉRA 2006 2006.11.18 Bináris fa – dinamikus láncolás A Bináris fa rekurzív adatszerkezet műveletei: balgyerek(bf): balgyerek:=bf->bal Függvény vége. jobbgyerek(bf): jobbgyerek:=bf->jobb Gyökérmódosít(bf,Elem): bf->elem:=Elem Eljárás vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 8

Bináris fa – statikus láncolás INFOÉRA 2006 2006.11.18 Bináris fa – statikus láncolás Koncepció: Típus TBinfa=Rekord (gyökér,akt,szabad: 0..Max, t: tömb(1..Max,TBinfaelem)) Tbinfaelem=Rekord (elem: TElem, bal,jobb: 0..Max) Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 9

Bináris fa – statikus láncolás INFOÉRA 2006 2006.11.18 Bináris fa – statikus láncolás A Bináris fa rekurzív adatszerkezet műveletei: Üres:Binfa üres?(Binfa):Logikai Egyeleműfa(Elem):Binfa Balrailleszt(Binfa,Elem):Binfa  {NemDef} előfeltétel: Binfa aktuális eleme nem üres, a bal része üres Jobbrailleszt(Binfa,Elem):Binfa  {NemDef} előfeltétel: Binfa aktuális eleme nem üres, a jobb része üres Gyökérre(Binfa):Binfa Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 10

Bináris fa – statikus láncolás INFOÉRA 2006 2006.11.18 Bináris fa – statikus láncolás A Bináris fa rekurzív adatszerkezet műveletei: elem(Binfa):Elem  {NemDef} előfeltétel: Binfa aktuális eleme nem üres Balra(Binfa):Binfa  {Nemdef} előfeltétel: Binfa aktuális eleme nem üres Jobbra(Binfa):Binfa  {Nemdef} előfeltétel: Binfa aktuális eleme nem üres Módosít(Binfa,Elem):Binfa  {Nemdef} előfeltétel: Binfa aktuális eleme nem üres Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 11

Bináris fa – statikus láncolás INFOÉRA 2006 2006.11.18 Bináris fa – statikus láncolás A Bináris fa rekurzív adatszerkezet műveletei: Üres(bf): bf.gyökér:=0; bf.akt:=0; bf.szabad:=1 Eljárás vége. üres?(bf): üres?:=bf.gyökér=0 Függvény vége. Egyeleműfa(bf,Elem): bf.gyökér:=1; bf.akt:=1; bf.t(1):=(Elem,0,0) Gyökérre(bf): bf.akt:=bf.gyökér Eljárás vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 12

Bináris fa – statikus láncolás INFOÉRA 2006 2006.11.18 Bináris fa – statikus láncolás A Bináris fa rekurzív adatszerkezet műveletei: Balrailleszt(bf,Elem): x:=bf.szabad; bf.akt:=x; bf.t(bf.akt).bal:=x bf.t(x):=(Elem,0,0); bf.szabad:=bf.szabad+1 Eljárás vége. Jobbrailleszt(bf,Elem): x:=bf.szabad; bf.akt:=x; bf.t(bf.akt).jobb:= x elem(bf): elem:=bf.t(bf.akt).elem Függvény vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 13

Bináris fa – statikus láncolás INFOÉRA 2006 2006.11.18 Bináris fa – statikus láncolás A Bináris fa rekurzív adatszerkezet műveletei: Balra(bf): bf.akt:=bf.t(bf.akt).bal Függvény vége. Jobbra(bf): bf.akt:=bf.t(bf.akt).jobb Módosít(bf,Elem): bf.t(bf.akt).elem:=Elem Eljárás vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 14

Bináris fa – statikus láncolás INFOÉRA 2006 2006.11.18 Bináris fa – statikus láncolás Módosítás: a bináris fa egyes elemei tartalmazhatják a fölöttük levő elem azonosítóját is. Típus TBinfa=Rekord (gyökér,akt: 0..Max, t: tömb(1..Max,TBinfaelem)) Tbinfaelem=Rekord (elem: TElem, bal,jobb,szülő: 0..Max) Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 15

Bináris fa – dinamikus láncolás INFOÉRA 2006 2006.11.18 Bináris fa – dinamikus láncolás Módosítás: a bináris fa egyes elemei tartalmazhatják a fölöttük levő elem azonosítóját is – dinamikus láncolással. Típus TBinfa=Rekord (gyökér,akt: TBinfaelem'Mutató) TBinfaelem=Rekord (elem: TElem, bal,jobb,szülő: TBinfaelem'Mutató) Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 16

Bináris fa – új műveletek INFOÉRA 2006 2006.11.18 Bináris fa – új műveletek Fa bejárások: Bal-közép-jobb (inorder) BKJ(bf): Ha nem üres?(bf) akkor BKJ(balgyerek(bf)) Ki: gyökérelem(bf) BKJ(jobbgyerek(bf)) Elágazás vége Eljárás vége. Alkalmazás: rendezőfa 3 7 4 5 6 1 2 Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 17

Bináris fa – új műveletek INFOÉRA 2006 2006.11.18 Bináris fa – új műveletek Fa bejárások: Közép-bal-jobb (preorder) KBJ(bf): Ha nem üres?(bf) akkor Ki: gyökérelem(bf) KBJ(balgyerek(bf)) KBJ(jobbgyerek(bf)) Elágazás vége Eljárás vége. 3 7 4 5 6 1 2 Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 18

Bináris fa – új műveletek INFOÉRA 2006 2006.11.18 Bináris fa – új műveletek Fa bejárások: Bal-jobb-közép (postorder) BJK(bf): Ha nem üres?(bf) akkor BJK(balgyerek(bf)) BJK(jobbgyerek(bf)) Ki: gyökérelem(bf) Elágazás vége Eljárás vége. Alkalmazás: Fa törlése, elemszáma, magassága, ... 3 7 4 5 6 1 2 Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 19

Bináris fa – új műveletek INFOÉRA 2006 2006.11.18 Bináris fa – új műveletek 6 5 4 2 3 7 1 6 5 4 2 3 7 7 Fa törlése (dinamikus láncolással) Törlés(bf): Ha nem üres?(bf) akkor Törlés(balgyerek(bf)) Törlés(jobbgyerek(bf)) Gyökértörlés(bf) Elágazás vége Eljárás vége. Gyökértörlés(bf): Felszabadít(bf); bf:=sehova Eljárás vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 20

Kereső- és rendezőfák Közös tulajdonságok: INFOÉRA 2006 2006.11.18 Kereső- és rendezőfák Közös tulajdonságok: A gyökérelem (vagy kulcsértéke) nagyobb vagy egyenlő minden tőle balra levő elemnél. A gyökérelem (vagy kulcsértéke) kisebb vagy egyenlő minden tőle jobbra levő elemnél. Keresőfa specialitása: Nincs két azonos (kulcsú) elem. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 21

INFOÉRA 2006 2006.11.18 Keresőfák Keresés(k,kf): Elágazás Üres?(kf)esetén Keresés:=kf k<gyökérelem(kf).kulcs esetén Keresés:=Keresés(k,balgyerek(kf)) k>gyökérelem(kf).kulcs esetén Keresés:=Keresés(k,jobbgyerek(kf)) k=gyökérelem(kf).kulcs esetén Keresés:=kf Elágazás vége Függvény vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 22

INFOÉRA 2006 2006.11.18 Keresőfák Beillesztés(e,kf): Elágazás Üres?(kf)esetén kf:=egyeleműfa(e) e.kulcs<gyökérelem(kf).kulcs esetén Beillesztés(e,balgyerek(kf)) e.kulcs>gyökérelem(kf).kulcs esetén Beillesztés(e,jobbgyerek(kf)) Elágazás vége Függvény vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 23

INFOÉRA 2006 2006.11.18 Rendezőfák Beillesztés(e,kf): Elágazás Üres?(kf) esetén kf:=egyeleműfa(e) e.kulcs≤gyökérelem(kf).kulcs esetén Beillesztés(e,balgyerek(kf)) e.kulcs>gyökérelem(kf).kulcs esetén Beillesztés(e,jobbgyerek(kf)) Elágazás vége Függvény vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 24

Bináris fák Néhány speciális fa művelet: elemszám(bf): INFOÉRA 2006 2006.11.18 Bináris fák Néhány speciális fa művelet: elemszám(bf): Ha üres?(bf) akkor elemszám:=0 különben elemszám:=1+elemszám(balgyerek(bf))+ elemszám(jobbgyerek(bf)) Függvény vége. magasság(bf): Ha üres?(bf) akkor magasság:=0 különben magas:=1+max(magasság(balgyerek(bf)), magasság(jobbgyerek(bf)) Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 25

Bináris fák Néhány speciális fa művelet: levélszám(bf): INFOÉRA 2006 2006.11.18 Bináris fák Néhány speciális fa művelet: levélszám(bf): Ha üres?(bf) akkor levélszám:=0 különben ha üres(balgyerek(bf)) és üres(jobbgyerek(bf)) akkor levélszám:=1 különben levélszám:=levélszám(balgyerek(bf))+ levélszám(jobbgyerek(bf)) Függvény vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 26

Bináris fák Leghosszabb út hossza (magasság számolásával): legh(bf,m): INFOÉRA 2006 2006.11.18 Bináris fák Leghosszabb út hossza (magasság számolásával): legh(bf,m): Ha üres(balgyerek(bf)) és üres(jobbgyerek(bf)) akkor m:=1; legh:=0 különben x:=legh(balgyerek(bf),mx) y:=legh(jobbgyerek(bf),my) Ha mx>my akkor m:=mx különben m:=my Ha x<y akkor z:=y különben z:=x Ha mx+my+2>z akkor legh:=mx+my+2 különben legh:=z Függvény vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 27

Bináris fák szélesség(bf,szint): INFOÉRA 2006 2006.11.18 Bináris fák szélesség(bf,szint): Ha nem üres?(bf) akkor sz(szint):=sz(szint)+1 szélesség(balgyerek(bf),szint+1) szélesség(jobbgyerek(bf),szint+1) Eljárás vége. széles(bf): szélesség(bf,0); max:=0; Ciklus i=1-től magas(fb)-ig Ha sz(i)>sz(max) akkor max:=i Ciklus vége Eljárás vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 28

Nem bináris fák A fa rekurzív adatszerkezet ábrázolása: INFOÉRA 2006 2006.11.18 Nem bináris fák A fa rekurzív adatszerkezet ábrázolása: Típus TFa=Rekord (elem: TElem ágak: Sorozat(TFa)) Egy speciális változat (ágszám felső korláttal): Típus TFa=Rekord (elem: TElem db: Egész ág: Tömb(1..Max,TFa)) Ide lehetne egy listás megvalósítás is Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 29

Nem bináris fák A fa rekurzív adatszerkezet műveletei: INFOÉRA 2006 2006.11.18 Nem bináris fák A fa rekurzív adatszerkezet műveletei: Üres:Fa üres?(Fa):Logikai Egyeleműfa(Elem):Fa gyerekszám(Fa):Egész Beilleszt(Fa,Fa):Fa  {NemDef} Gyökérelem(Fa):Elem  {NemDef} Gyökérmódosít(Fa,Elem):Fa  {NemDef} Gyerek(Fa,Egész):Fa  {NemDef} Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 30

Nem bináris fák A fa műveletei megvalósítása dinamikus láncolással: INFOÉRA 2006 2006.11.18 Nem bináris fák A fa műveletei megvalósítása dinamikus láncolással: Üres(f): f:=sehova Eljárás vége. üres?(f): üres?:=(f=sehova) Függvény vége. Egyeleműfa(e): Lefoglal(f,(e,Üressorozat)); Egyeleműfa:=f Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 31

Nem bináris fák A fa műveletei megvalósítása dinamikus láncolással: INFOÉRA 2006 2006.11.18 Nem bináris fák A fa műveletei megvalósítása dinamikus láncolással: gyerekszám(f): gyerekszám:=Elemszám(f->ágak) Függvény vége. Gyökérelem(f): Gyökérelem:=f->elem Függvény vége. Gyökérmódosít(f,e): f->elem:=e Eljárás vége. gyerekszám(f): gyerekszám:=f->db Függvény vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 32

Nem bináris fák Sorozattal ábrázolva: INFOÉRA 2006 2006.11.18 Nem bináris fák Sorozattal ábrázolva: Beilleszt(mire,mit): mire->ágak:=Végére(mire->ágak,mit)* Eljárás vége. Gyerek(f,i): Ha i≤Elemszám(f->ágak) akkor Gyerek:=f->ágak(i) különben Gyerek:=Üres Függvény vége. A gyerek nem indexeléssel kellene!!!!!! *: Elejére is lehet, ha a sorrend nem fontos! Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 33

Nem bináris fák Tömbbel ábrázolva: Beilleszt(mire,mit): INFOÉRA 2006 2006.11.18 Nem bináris fák Tömbbel ábrázolva: Beilleszt(mire,mit): mire->db:=mire->db+1 mire->ág(mire->db):=mit Eljárás vége. Gyerek(f,i): Ha i≤f->db akkor Gyerek:=f->ág(i) különben Gyerek:=Üres Függvény vége. Listával is kellene! Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 34

Nem bináris fák – alkalmazás INFOÉRA 2006 2006.11.18 Nem bináris fák – alkalmazás A fa elemszáma elemszám(f): Ha üres?(f) akkor elemszám:=0 különben s:=1 Ciklus i=1-től f->db-ig s:=s+elemszám(f->ág(i)) Ciklus vége elemszám:=s Függvény vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 35

Nem bináris fák – alkalmazás INFOÉRA 2006 2006.11.18 Nem bináris fák – alkalmazás A fa magassága magasság(f): Ha üres?(f) akkor magasság:=0 különben max:=0 Ciklus i=1-től f->db-ig m:=magasság(f->ág(i)) Ha m>max akkor max:=m Ciklus vége magasság:=max+1 Függvény vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 36

Nem bináris fák – binárisan INFOÉRA 2006 2006.11.18 Nem bináris fák – binárisan Bináris ábrázolás: balra az 1. gyerek jobbra a következő testvér 13 132 131 1311 1312 1 12 14 141 133 11 1 11 12 13 14 131 132 133 141 1311 1312 Kellene az átalakító algoritmus! Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 37

Nem bináris fák – binárisan INFOÉRA 2006 2006.11.18 Nem bináris fák – binárisan Gyerek(f,i): Ha i=1 akkor Gyerek:=f->bal különben Gyerek:=Testvér(f->bal,i) Függvény vége. Testvér(f,i): Ha i=2 akkor Testvér:=f->jobb különben Testvér:=Testvér(f->jobb,i-1) Függvény vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 38

Nem bináris fák – binárisan INFOÉRA 2006 2006.11.18 Nem bináris fák – binárisan Elsőgyerek(f): Elsőgyerek:=f->bal Függvény vége. Következőgyerek(gy): Következőgyerek:=gy->jobb Függvény vége. Vanméggyerek(gy): Vanméggyerek:=(gy->jobb≠sehova) Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 39

Nem bináris fák – binárisan INFOÉRA 2006 2006.11.18 Nem bináris fák – binárisan Gyerek(f,i): gy:=Elsőgyerek(f) Ha i=1 akkor Gyerek:=gy különben Ciklus j=2-től i-ig gy:=Következőgyerek(gy) Ciklus vége Gyerek:=gy Függvény vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 40

Nem bináris fák – alkalmazás INFOÉRA 2006 2006.11.18 Nem bináris fák – alkalmazás A fa magassága magasság(f): Ha üres?(f) akkor magasság:=0 különben gy:=elsőgyerek(f) max:=magasság(gy) Ciklus amíg vanméggyerek(gy) gy:=következőgyerek(gy) m:=magasság(gy) Ha m>max akkor max:=m Ciklus vége magasság:=max+1 Függvény vége. Fák 2018.12.30. 17:55 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 41

Programozási alapismeretek 2006.11.18 Fák, bináris fák 2008/2009.