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. Fák A fa egy olyan gráf, amelyik összefüggő és nem létezik benne kör. A fa egy olyan gráf, amelyik összefüggő és nem létezik benne kör. A B C D EF.

Hasonló előadás


Az előadások a következő témára: "Fák. Fák A fa egy olyan gráf, amelyik összefüggő és nem létezik benne kör. A fa egy olyan gráf, amelyik összefüggő és nem létezik benne kör. A B C D EF."— 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. A fa egy olyan gráf, amelyik összefüggő és nem létezik benne kör. A B C D EF LKM H IJN 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 B CD E F LKMHIJN P Q G A fa mélysége = a gyökértől a levelekhez vezető leghosszabb út Ebben az esetben: 3 (A, E, J, Q)

4 Adott a következő ősvektor: 0, 5, 8, 1, 1, 2, 3, 6 1 45 2 6 8 3 7 Ő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.

5 Bináris fa Olyan fa, melyben egyetlen csúcsnak sincs kettőnél több gyereke: részfa j gyökér részfa b 1 23 456 798 Példa bináris fára: Deklarálás Pascalban: type binfa=^adat; adat=record inf=byte; {char/string} bal, jobb:binfa; end;

6 1 23 456 798 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; A levelek kiírása

7 1 23 456 798 Procedure bal(l:binfa); Begin If l^.bal=nil then write(l^.inf) else bal(l^.bal); End; Procedure jobb(l:binfa); Begin If l^.jobb=nil then write(l^.inf) else jobb(l^.jobb); End; A legbaloldalibb (legjobboldalibb) csomópont meghatározása A legbaloldalibb (legjobboldalibb) csomópont meghatározása

8 1 23 456 798 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: 1 2 4 7 5 3 6 8 9 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: 4 7 2 5 1 3 8 6 9 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: 7 4 5 2 8 9 6 3 1 Bináris fák bejárása

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ő. Példa keresőfára Keresőfa: 6, 8, 2, 1, 4, 3, csúcsok estén 8 2 6 4 1 3 Szúrjunk be egy új csúcsot pl. az 5-öst 5

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. 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 8 2 4 1 3 Keressük meg a 2-es csúcsot. 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 6 8 2 4 1 3 Törlés (Delete): Először megkeressük a csúcsot. Ha: 1.a csúcs egy levél, akkor azonnal törölhető 2.a csúcsnak egy gyereke van, akkor a szülője pointerének átírása után a csúcs törölhető 3.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

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

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

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

15 Miklós Zoltán


Letölteni ppt "Fák. Fák A fa egy olyan gráf, amelyik összefüggő és nem létezik benne kör. A fa egy olyan gráf, amelyik összefüggő és nem létezik benne kör. A B C D EF."

Hasonló előadás


Google Hirdetések