Professional Documents
Culture Documents
h
h
h h h
N
N
N N N
i h
i
h
N N
* 2
2
i=h/2;
/ 2
2
log / 2
(log ) *2
h
N
N h
N h
11
TS Nguyn Mnh Hng BM CNPM
Cc php quay
Khi thc hin cc php ton (insertion or deletion),
chng ta cn phi bin i cy m bo tch cht
cn bng.
C hai dng quay single rotations or double rotations.
C
x
y
A
B
Before
Rotation
y
x
A
B
C
After
Rotation
e.g. Single Rotation
12
TS Nguyn Mnh Hng BM CNPM
Cc php quay (cont.)
Khi thm/xa c th lm thay i chiu cao ca
cy.
Khi iu kin cn bng c th b vi phm.
Chng hn ti nt x s khc nhau ca left(x) v
right(x) l 2.
p dng cc php quay ti nt x hiu chnh
cy.
13
TS Nguyn Mnh Hng BM CNPM
Case 1: Cy lch tri
14
TS Nguyn Mnh Hng BM CNPM
Case 1.1: Quay n phi T1 quanh T
15
TS Nguyn Mnh Hng BM CNPM
Case 1.2: Quay n phi T1
16
TS Nguyn Mnh Hng BM CNPM
Case 1.3: Quay kp Left-Right vi T2
Quay tri T2 quanh T1, Quay phi T2 quanh T
17
TS Nguyn Mnh Hng BM CNPM
Case 2: Cy lch phi
18
TS Nguyn Mnh Hng BM CNPM
Case 2: Cy lch phi (Cont.)
Cc trng hp cy b lch phi ta thc hin
cc php quay n v quay kp tng t nh
trng hp cy lch tri nhng theo chiu
ngc li.
19
TS Nguyn Mnh Hng BM CNPM
Insertion
Tin hnh tng t nh thm kha trong CNPTK.
Kim tra cc nt trn ng dn t nt mi thm
n gc. Vi mi nt x bt gp trn path kim tra
left(x) v right(x). Nu tha mn k cn bng th
b qua v xt tip nt trn. Nu khng tha mn
th phi tin hnh quay n hoc kp.
Vi php thm nt, phi quay ti a mt ln (hoc
quay n hoc quay kp)
20
TS Nguyn Mnh Hng BM CNPM
Insertion
Gi s x l nt c s chnh lnh ca left(x) v
right(x) ln hn 1 (bng 2).
Gi s chiu cao ca x l h+3
C 4 TH sau:
Chiu cao ca left(x) l h+2 (height of right(x) is h)
H of left(left(x)) is h+1 single rotate with left child
H of right(left(x)) is h+1 double rotate with left child
Chiu cao ca right(x) l h+2 (height of left(x) is h)
H of right(right(x)) is h+1 single rotate with right child
H of left(right(x)) is h+1 double rotate with right child
21
TS Nguyn Mnh Hng BM CNPM
Single rotation
Thm nt mi vo cy con A lm cho chiu cao ca cy con A
tng ln 1 (bng h+1).
K cn bng b vi phm ti nt x.
chiu cao ca left(x) is h+2
chiu cao ca right(x) is h.
quay phi nt y quanh nt x.
Nghing tri
Nghing phi
22
TS Nguyn Mnh Hng BM CNPM
Single rotation
Single rotation takes O(1) time.
Insertion takes O(log N) time.
Thm nt vo cy con C.
K cn bng b vi phm ti nt x.
23
TS Nguyn Mnh Hng BM CNPM
5
3
1
4
Insert 0.8
AVL Tree
8
0.8
5
3
1
4
8
x
y
A
B
C
3
5
1
0.8
4
8
After rotation
24
TS Nguyn Mnh Hng BM CNPM
Double rotation
Thm nt vo cy con B1 or B2.
K cn bng b vi phm ti nt x.
Quay tri z quanh y; quay phi z quanh x
also called left-right rotate
25
TS Nguyn Mnh Hng BM CNPM
Double rotation
Thm nt vo cy con B1 or B2.
K cn bng b vi phm ti nt x.
Quay phi z quanh y; quay tri z quanh x
also called right-left rotate
26
TS Nguyn Mnh Hng BM CNPM
5
3
1 4
Insert 3.5
AVL Tree
8
3.5
5
3
1
4
8
4
5
1
3
3.5
After Rotation
x
y
A z
B
C
8
27
TS Nguyn Mnh Hng BM CNPM
An Extended Example
Insert 3,2,1,4,5,6,7, 16,15,14
3
Fig 1
3
2
Fig 2
3
2
1
Fig 3
2
1
3
Fig 4
2
1
3
4
Fig 5
2
1
3
4
5
Fig 6
Single rotation
Single rotation
28
TS Nguyn Mnh Hng BM CNPM
2
1
4
5
3
Fig 7
6
2
1
4
5
3
Fig 8
4
2
5
6
1 3
Fig 9
4
2
5
6
1 3
7
Fig 10
4
2
6
7
1 3
5 Fig 11
Single rotation
Single rotation
29
TS Nguyn Mnh Hng BM CNPM
4
2
6
7
1 3
5
16
Fig 12
4
2
6
7
1 3
5
16
15
Fig 13
4
2
6
15
1 3
5
16
7
Fig 14
Double rotation
30
TS Nguyn Mnh Hng BM CNPM
5
4
2
7
15
1 3
6
16
14
Fig 16
4
2
6
15
1 3
5
16
7
14
Fig 15
Double rotation
31
TS Nguyn Mnh Hng BM CNPM
Deletion
Xa nt x nh trong CNPTK.
Kim tra cc nt trn path t nt thay th n nt
gc. Vi mi nt x bt gp trn path, kim tra left(x)
v right(x). Nu tha mn K cn bng th xt tip
nt trn, nu khng tha mn th thc hin php
quay tng ng.
Vi php xa nt th sau khi thc hin php quay
nt x, chng ta vn c th phi thc hin php quay
cc nt trn ca x. V vy sau khi quay chng ta
vn phi tip tc xt cc nt pha trn
32
TS Nguyn Mnh Hng BM CNPM
Single rotations in deletion
rotate with left child
Xa nt trn cy con C.
33
TS Nguyn Mnh Hng BM CNPM
Single rotations in deletion
rotate with right child
Xa nt trn cy con A.
34
TS Nguyn Mnh Hng BM CNPM
Double rotation
Xa nt trn cy con C.
also called left-right rotate
35
TS Nguyn Mnh Hng BM CNPM
Double rotation
Xa nt trn cy con A.
also called right-left rotate
36
TS Nguyn Mnh Hng BM CNPM
V d xa nt X
X
37
Cu trc d liu
typedef int KEY;
struct tree_node{
KEY key;
tree_node *left,*right;
int height;
} ;
TS Nguyn Mnh Hng BM CNPM
38
Quay phai nut con trai cua nut p quanh nut p
void right_rotation(tree_node *p){
tree_node *c;
KEY tmp_key;
tmp_key=p->key;
p->key=p->left->key;
p->left->key=tmp_key;
c=p->left;
p->left=p->left->left;
c->left =c->right;
c->right=p->right;
p->right=c;
}
TS Nguyn Mnh Hng BM CNPM