Académique Documents
Professionnel Documents
Culture Documents
]
]
\
|
]
]
\
|
+
=
n n
n
F
2
5 1
2
5 1
5
1
=
|
|
\
|
+
|
|
\
|
+
1
1
]
1
|
|
\
|
|
|
\
|
|
|
\
|
+
+ +
2
2
5 1
2
5 1
5
1
1
2
5 1
2
5 1
5
1
3 3 3 h h h
= + 1 3 h F
n h S h h
h h h
h h
2 2
2
2
log 44 , 1 log
2
5 1
log
1
log /
2
5 1
2
2
5 1
5
2
2
5 1
2
2
5 1
5
5 2
2
2
5 1
8
5 5 5 3 5 3 1
5
1
+
+
+
=
=
+ +
=
+ + + +
nS
h
h nem mehet az optimlis fl
44%- kal tbbel
AVL fk jrakiegyenslyozs beszrsnl
A beszrs elrontja az AVL tulajdonsgot
4 eset
1 s 4 tkrkpek
2 s 3 tkrkpek
Egy j attribtumot vezetnk be:
kiegyenslyozsi tnyez
-1 : bal rszfa magasabb 1-gyel
0 : egyforma magasak a rszfk
+1: jobb rszfa magasabb 1-gyel
1 2 3 4
AVL fk jrakiegyenslyozs beszrsnl
A. A (++,+) szably:
x
y
h
h
h+1
++
+
< x< < y<
Az j levl a rszfba kerlt.
A beszrs eltt a fa magassga h+2 volt.
x
y
h
h h
0
+
beszrs
AVL fk jrakiegyenslyozs beszrsnl
A. A (++,+) szably:
x
y
h
h
h+1
++
+
< x< < y<
Az j levl a rszfba kerlt.
A beszrs eltt a fa magassga h+2 volt.
Forgats:
x
y
h h
h+1
A forgats utn ismt h+2 a magassg.
Ezrt feljebb, a befoglal fban (ha van),
vltozatlanul rvnyes az AVL
tulajdonsg, nem kell feljebb menni
ellenrizni.
Ennek a tkrkpe a (--,-)
szably! (1. eset)
AVL fk jrakiegyenslyozs beszrsnl
Plda:
22
15
10
++
20
+
17
25
-
3
18
21
30
-
ezt szrtuk be
AVL fk jrakiegyenslyozs beszrsnl
Plda:
22
15
10
20
17
25
3
18
21
30
AVL fk jrakiegyenslyozs beszrsnl
B. A (++,-) szably:
x
y
h
h
+
0
< x< < z < < y <
Az j levl a z alatti vagy rszfba kerlt.
A beszrs eltt a z cscs alatti fk egyformk:
z
x
y
h
++
-
z
h-1
h
h
h-1
h-1
h
h-1
0
AVL fk jrakiegyenslyozs beszrsnl
B. A (++,-) szably:
x
y
h
h
++
-
< x< < z < < y <
Dupla forgats kell: elszr jobbra:
z
h-1
h
h
h-1
x
y
+
++
0 v.+
h
h v.
h-1
h-1 v.
h
AVL fk jrakiegyenslyozs beszrsnl
x
y
x
y
z
azutn balra:
AVL fk jrakiegyenslyozs beszrsnl
B. A (++,-) szably:
< x< < z < < y <
tovbbra is igaz
Vgl teht:
x
y
z
A beszrs eltt az x gyker fa magassga
h+2 volt.
A forgats utn ismt h+2 a magassg. Ezrt
feljebb, a befoglal fban (ha van),
vltozatlanul rvnyes az AVL tulajdonsg,
nem kell feljebb menni ellenrizni.
Ennek a tkrkpe a (--,+)
szably!
AVL fk jrakiegyenslyozs beszrsnl
sszefoglalva:
A beszrs utn az j levltl felfel haladva a
gykr fel jra szmoljuk a cscsok cmkit ezen
az tvonalon. Ha egy x cscs cmkje ++ vagy -
lesz, akkor az x gyker (rsz)fa (esetleg dupla)
forgatsval helyrellthat az AVL tulajdonsg.
Mveletigny: O(1)
Ttel. Legyen S egy n cscsbl ll AVL-fa.
BESZR(s; S) utn legfeljebb egy (esetleg dupla)
forgatssal helyrellthat az AVL-tulajdonsg. A
beszrs kltsge ezzel egytt is O(log n).
Bizonyts: az elzekbl kvetkezik
AVL fk jrakiegyenslyozs trlsnl
A. A (++,+) szably:
x
y
h
h
h+1
++
+
< x< < y<
A trls az rszfban trtnt. Ennek a
magassga h+1 volt s h lett. Az x
gyker fa magassga h+3-rl h+2-re
cskkent. Forgats:
x
y
h h
h+1
A forgats utn h+2 a magassg. Ezrt
feljebb, a befoglal fban (ha van), nem
biztos, hogy vltozatlanul rvnyes az
AVL tulajdonsg, feljebb kell menni
ellenrizni, amg a gykrig nem jutunk.
AVL fk jrakiegyenslyozs trlsnl
B. A (++,-) szably:
x
y
h
h
++
-
< x< < z < < y <
A trls az rszfban trtnt. Ennek a
magassga h+1 volt s h lett. Az x gyker fa
magassga h+3-rl h+2-re cskkent.
A trls eltt a z cscs alatt fa:
z
h h
z
h
h
dupla
forgats
AVL fk jrakiegyenslyozs trlsnl
B. A (++,-) szably:
< x< < z < < y <
tovbbra is igaz
Vgl teht:
x
y
z
A forgats utn h+2 a magassg. Ezrt
feljebb, a befoglal fban (ha van), nem
biztos, hogy vltozatlanul rvnyes az
AVL tulajdonsg, feljebb kell menni
ellenrizni, amg a gykrig nem jutunk.
AVL fk jrakiegyenslyozs trlsnl
sszefoglalva:
Mivel az x gyker fa magassga cskkent a forgatssal, ezrt
feljebb is, ha van befoglal fa, elromolhatott az AVL
tulajdonsg.
A trls utn a trlt elem szljtl kezdve felfel haladva a
gykr fel jra szmoljuk a cscsok cmkit ezen az
tvonalon. Ha egy x cscs cmkje ++ vagy - lesz, akkor az
x gyker (rsz)fa (esetleg dupla) forgatsval helyrelltjuk
annak AVL tulajdonsgt. Ha x nem a gykr, akkor feljebb
kell lpni s folytatni kell az ellenrzst. Szlssges
esetben az adott tvonal minden pontjban forgatni kell!
Ttel: Az n pont AVL-fbl val trls utn legfeljebb
1,44 log
2
n (sima vagy dupla) forgats helyrelltja az AVL-
tulajdonsgot.
Bizonyts: az elzekbl kvetkezik.
AVL fk - adatszerkezetek
AVL implementlsa: egy flag jelzi a cscs llapott
Nzzk meg az animcit!
typedef enum { LeftHeavy, Balanced, RightHeavy }
BalanceFactor;
struct AVL_node {
BalanceFactor bf;
void *item;
struct AVL_node *left, *right;
}
sszefoglals
AVL fk
Az els dinamikusan kiegyenslyozott fk
A magassg az optimlis 44%-n bell
jrakiegyenslyozs forgatsokkal
O(log n)