Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Fák.

Hasonló előadás


Az előadások a következő témára: "Fák."— Előadás másolata:

1 Fák

2 Fák A fa egy olyan gráf, amelyik összefüggő és nem létezik benne kör.
C D E F L K M H I J N P Q G

3 Fák A csúcs gyökér. F-nek A a szülője, K, L, M a gyerekei.
Levelek (olyan csúcsok, melyeknek nincs gyermekük): B, C, H, I, P, Q, K, L, M, N. Testvérek (ugyanaz a szülőjük): pl. K, L, M. A fa mélysége = a gyökértől a levelekhez vezető leghosszabb út A Ebben az esetben: 3 (A, E, J, Q) B C D E F G H I J K L M N P Q

4 Adott a következő ősvektor: 0, 5, 8, 1, 1, 2, 3, 6
Ősvektor: Az ősvektor egy olyan tömb, mely a csomópontok ősét (apját) tárolja. A gyökér ősének megfelelő érték 0. Adott a következő ősvektor: 0, 5, 8, 1, 1, 2, 3, 6 1 4 5 2 6 8 3 7

5 Bináris fa Olyan fa, melyben egyetlen csúcsnak sincs kettőnél több gyereke: Példa bináris fára: részfaj gyökér részfab 1 2 3 4 5 6 7 9 8 Deklarálás Pascalban: type binfa=^adat; adat=record inf=byte; {char/string} bal, jobb:binfa; end;

6 A levelek kiírása 1 2 3 4 5 6 7 8 9 Procedure level(l:binfa); Begin
if (l^.jobb=nil) and (l^.bal=nil) then write(l^.inf) else if l^.jobb=nil then level(l^.bal) else if l^.bal=nil then level(l^.jobb) else begin level(l^.bal); level(l^.jobb); end; End; 1 2 3 4 5 6 7 8 9

7 A legbaloldalibb (legjobboldalibb) csomópont meghatározása
Procedure bal(l:binfa); Begin If l^.bal=nil then write(l^.inf) else bal(l^.bal); End; 1 2 3 4 5 6 Procedure jobb(l:binfa); Begin If l^.jobb=nil then write(l^.inf) else jobb(l^.jobb); End; 7 8 9

8 Bináris fák bejárása Azt nevezzük preorder bejárásnak amikor kiírjuk a gyökeret majd rendre bejárjuk a bal- majd a jobb részfát: Azt nevezzük inorder bejárásnak amikor bejárjuk előbb a bal részfát, majd kiírjuk a gyökeret ezután bejárjuk a jobb részfát: Azt nevezzük postorder bejárásnak, amikor rendre bejárjuk a bal- majd a jobb részfát és ezután kiírjuk a gyökeret: 1 2 3 4 5 6 7 8 9

9 Bináris keresőfa Bináris keresőfa: Minden X csúcsra teljesül, hogy a baloldali részfa minden csúcsában lévő információ kisebb, mint az X-ben levő, a jobboldali részfában pedig minden érték nagyobb vagy egyenlő. Szúrjunk be egy új csúcsot pl. az 5-öst Keresőfa: 6, 8, 2, 1, 4, 3, csúcsok estén 6 2 8 5 1 4 3 Példa keresőfára

10 Keresés Keresés (Find): a T fa azon csomópontjának értékét írja ki, amelynek információja X, vagy nil, ha nincs. Keressük meg a 2-es csúcsot. procedure Find(X: integer; T: binfa) ; Begin If T=nil then write(X,’ nem talalhato’) else If T^.inf =x then write(X,’-et megtalaltam’) else If X < T^.inf then Find(X, T^.bal) Else If X > T^.inf then Find(X, T^.jobb) End; (keressük a 2-est). 6 2 8 1 4 3 A keresőfáknál a legkisebb elem a legbaloldalibb csúcs, és a legnagyobb a legjobboldalibb csúcs értéke.

11 Törlés Törlés (Delete): Először megkeressük a csúcsot. Ha:
a csúcs egy levél, akkor azonnal törölhető a csúcsnak egy gyereke van, akkor a szülője pointerének átírása után a csúcs törölhető a csúcsnak két gyereke van, akkor megkeressük a bal részfájában a legjobboldalibb csúcsot, ami a törlendő csúcs helyére kerül 6 8 2 4 1 3

12 Töröljük a 3-as csúcsot 6 2 8 1 4 3

13 Töröljük a 4-es csúcsot 6 2 8 1 4 3

14 Töröljük a 2-es csúcsot 6 2 8 1 4 3

15 Köszönöm a figyelmet Miklós Zoltán


Letölteni ppt "Fák."

Hasonló előadás


Google Hirdetések