You are on page 1of 23

Chng 3.

CY

Trong chng ny chng ta s nghin cu m hnh d liu cy. Cy l mt
cu trc phn cp trn mt tp hp no cc i tng. Mt v d quen thuc v
cy, l cy th mc.Cy c s dng rng ri trong rt nhiu vn khc
nhau. Chng hn, n c p dng t chc thng tin trong cc h c s d liu,
m t cu trc c php ca cc chng trnh ngun khi xy dng cc chng
trnh dch. Rt nhiu cc bi ton m ta gp trong cc lnh vc khc nhau c quy
v vic thc hin cc php ton trn cy. Trong chng ny chng ta s trnh by
nh ngha v cc khi nim c bn v cy. Chng ta cng s xt cc phng php
biu din cy v s thc hin cc php ton c bn trn cy. Sau chng ta s
nghin cu k mt dng cy c bit, l cy tm kim nh phn.

3.1. Mt s khi nim
3.1.1. Cc nh ngha
- Cy: l mt tp hp hu hn cc phn t, mi phn t gi l mt nt
(Node), trong c mt nt c bit gi l gc (Root), gia cc nt c mt quan h
phn cp gi l quan h cha con

V d cho cy cc k t
Mc 1 gc



Mc 2



Mc 3



Mc 4

A: nt gc
A l nt cha ca B, C, D
B, C, D l cc nt con ca A
- Cy rng: cy khng c nt no c
- Cp ca nt: s nt con ca n, vd nt B c cp l 2
- Cp ca cy: cp ln nht ca cc nt c trn cy. Cy c cp n gi l cy
n phn, v d cy trn l cy tam phn
- L: nt c cp l 0, v d cc l F, C, G, J
- Mc: Nt gc c mc l 1. Nt cha c mc i th nt con c mc i+1
- Chiu cao ca cy: mc ln nht trn cy, v d cy trn c chiu cao 4
- Nt trc, nt sau: Nt x l nt trc ca nt y nu cy con gc x c cha
nt y, khi y l nt sau ca nt x. v d D l nt trc ca nt J
A
C D
G
B
F E H I
J K
- ng i (path): Dy nt u
1
, u
2
, . . . u
k
m nt bt k u
i
l cha ca nt u
i+1

th dy l ng i t nt u
1
n nt u
k

- di ng i: s cnh c trn ng i, v d dy DHJ l ng i t
nt D n nt J vi di l 2
- Cy c th t (ordered tree): l cy m nu ta thay i v tr ca cc cy
con th ta c mt cy mi. Nh vy nu ta i cc nt bn tri v bn phi th ta
c mt cy mi, v d sau y l 2 cy khc nhau:







- Rng: l tp hp hu hn cc cy phn bit

3.1.2. Cc cch biu din cy:
- Biu din cy bng th
- Biu din cy bng gin
- Biu din cy bng cc cp du ngoc lng nhau
- Biu din cy bng phng php cn l
- Biu din cy bng phng php ch s

3.2. Cy nh phn
3.2.1. nh ngha v tnh cht
3.2.1.1. nh ngha
Cy nh phn l mt tp hp hu hn cc nh c xc nh qui nh sau:
1.Mt tp trng l cy nh phn.
2.Gi s T
1
v T
2
l hai cy nh phn khng ct nhau ( ) =
2 1
T T v r l mt
nh mi khng thuc T
1
, T
2
. Khi ta c th thnh lp mt cy nh phn mi T
vi gc r c T
1
l cy con bn tri, T
2
l cy con bn phi ca gc. Cy nh phn T
c biu din bi hnh 4.9.

r




T1 T2

Cn lu rng, cy (cy c gc) v cy nh phn l hai khi nim khc nhau.
Cy khng bao gi trng, n lun lun cha t nht mt nh, mi nh c th
khng c, c th c mt hay nhiu cy con. Cn cy nh phn c th trng, mi
nh ca n lun lun c hai cy con c phn bit l cy con bn tri v cy con
bn phi. Chng hn, hnh sau minh ha hai cy nh phn khc nhau. Cy nh phn
trong hnh (a) c cy con tri ca gc gm mt nh, cn cy con phi trng. Cy
A
B C C B
A
nh phn trong hnh (b) c cy con tri ca gc trng, cn cy con phi gm mt
nh.




(a) (b)


T nh ngha cy nh phn, ta suy ra rng, mi nh ca cy nh phn ch c
nhiu nht l hai nh con, mt nh con bn tri ( l gc ca cy con tri) v
mt nh con bn phi ( l gc ca cy con phi).
1 A


2
B 3 C


4 D 5 E 6 F 7 G


8 H 9 I 10 J 11 K

3.2.1.2. Cc dng c bit ca cy nh phn
Cy nh phn suy bin l cy lch tri hoc cy lch phi
Cy zic-zc
Cy nh phn hon chnh: cc nt ng vi cc mc tr mc cui cng u c
2 con
Cy nh phn y : c cc nt ti a c mi mc
Cy nh phn y l mt trng hp c bit ca cy nh phn hon chnh
3.2.1.3. Cc tnh cht
S nt nm mc I 2
I
.
S nt l 2
h-1
, vi h l chiu cao ca cy.
Chiu cao ca cy h log
2
(s nt trong cy).
S nt trong cy 2
h
-1.

3.2.2. Biu din cy nh phn
3.2.2.1. Biu din cy nh phn bng danh sch c
Nu c mt cy nh phn hon chnh y , ta c th d dng nh s cho
cc nt trn cy theo th t ln lt cc mc t trn xung di v t tri sang
phi k t s 0 tr i. Khi nt th i s c nt con tri l nt th 2i+1 v c nt
con phi l nt th 2i+2
Ta dng mt mng mt chiu (vector) V cha cc nt, trong phn t
th i ca vector cha nt th i ca cy nh phn
Mi nh ca cy c biu din bi bn ghi gm ba trng: trng infor
m t thng tin gn vi mi nh, trng left ch nh con tri, trng right ch
nh con phi. Gi s cc nh ca cy c nh s t 0 n max-1, khi cu
trc d liu biu din cy nh phn c khai bo nh sau.

Khai bo: const int max= . . . ;
struct node
{ char infor; // trng cha d liu
int left;
int right;
};
typedef node Tree[max];
Tree V;
V d cy nh phn cho trn c biu din nh sau:

infor left right
1 A 2 3
2 B 4 5
3 C 6 7
4 D 0 8
5 E 9 10
6 F 0 0
7 G 11 0
8 H 0 0
9 I 0 0
10 J 0 0
11 K 0 0

3.2.2.2. Biu din cy nh phn bng danh sch lin kt
Chng ta cn c th s dng con tr ci t cy nh phn. Trong cch ny
mi bn ghi biu din mt nh ca cy cha hai con tr: con tr left tr ti nh
con tri, con tr Right tr ti nh con phi. Tc l ta c khai bo sau.
struct node
{ char data; // trng cha d liu
node *left;
node *right;
};
typedef node *Tree;
Tree T;

Bin con tr T tr ti gc ca cy. Vi cch ci t ny, cu trc d liu
biu din cy nh phn trn c minh ha bi hnh sau:

T


A



B C




D E F G




H I J K


T nay v sau chng ta s ch s dng cch biu din cy nh phn bng con
tr. Cc php ton i vi cy nh phn sau ny u c th hin trong cch biu
din bng con tr.
3.2.2.3. Cc php ton trn cy nh phn c biu din bng danh sch
lin kt
a. Khi to: Khi mi khi to, cy l rng ta cho T nhn gi tr NULL
void Create(Tree &T)
{ T = NULL;
}
b. Cc php duyt cy: Php duyt cy l lit k tt c cc nt c trn cy
theo mt th t no . Thng c 3 php duyt cy l:
- Duyt cy theo th t trc (i vi gc): Kiu duyt ny trc tin
thm nt gc, sau thm cc nt ca cy con tri ri n cy con phi.
. Gc
. Cy con tri
. Cy con phi
Hm duyt c th trnh by n gin nh sau:
void DuyetTruoc(Tree T)
{ if (T != NULL)
{ printf((*T).data);
DuyetTruoc( (*T).left );
DuyetTruoc( (*T).right );
}
}

- Duyt cy theo th t gia: Kiu duyt ny trc tin thm nt cc
nt ca cy con tri, sau thm nt gc ri n cy con phi.
. Cy con tri
. Gc
. Cy con phi
Hm duyt c th trnh by n gin nh sau:
void DuyetGiua(Tree T)
{ if (T != NULL)
{ DuyetGiua( (*T).left );
printf((*T).data);
DuyetGiua( (*T).right );
}
}

- Duyt cy theo th t sau:Kiu duyt ny trc tin thm cc nt
ca cy con tri, sau thm cc ca cy con phi, cui cng thm nt gc
. Cy con tri
. Cy con phi
. Gc
Hm duyt c th trnh by n gin nh sau:
void DuyetSau(Tree T)
{ if (T != NULL)
{ DuyetSau( (*T).left );
DuyetSau( (*T).right );
printf((*T).data);
}
}
c. Hm To cy nh phn mi t 2 cy nh phn cho trc
d. To trc tip cy nh phn nh

3.3. Cy nh phn tm kim
3.3.1. nh ngha
Cy nh phn tm kim (CNPTK) l cy nh phn trong ti mi nt, kha
ca nt ang xt ln hn kha ca tt c cc nt thuc cy con tri v nh hn
kha ca tt c cc nt thuc cy con phi.
Di y l mt v d v cy nh phn tm kim:

Nh rng buc v kha trn CNPTK, vic tm kim tr nn c nh hng. Hn
na, do cu trc cy vic tm kim tr nn nhanh ng k. Nu s nt trn cy l N
3.3.2. Cc thao tc trn cy nh phn tm kim
3.3.2.1. Duyt cy
Thao tc duyt cy trn cy nh phn tm kim hon ton ging nh trn cy
nh phn. Ch c mt lu nh l khi duyt theo th t gia, trnh t cc nt duyt
qua s cho ta mt dy cc nt theo th t tng dn ca kha
3.3.2.2. Tm mt phn t x trong cy
TNODE *searchNode(TREE T, Data X)
{
if (T) {
if ( T->.Key = = X) return T;
if(T->Key > X)
return searchNode(T->pLeft, X);
else
return searchNode(T->pRight, X);
}
return NULL;
}
Ta c th xy dng mt hm tm kim tng ng khng qui nh sau:
TNODE * sear chNode( TREE Root , Dat a x)
{ NODE *p = Root ;
whi l e ( p ! = NULL)
{
i f ( x == p- >Key) r et ur n p;
el se
i f ( x < p- >Key) p = p- >pLef t ;
el se p = p- >pRi ght ;
}
r et ur n NULL;
}
D dng thy rng s ln so snh ti a phi thc hin tm phn t X l h, vi h
l chiu cao ca cy. Nh vy thao tc tm kim trn CNPTK c n nt tn chi ph
trung bnh khong O(log
2
n) .
V d: Tm phn t 55


3.3.2.3. Thm mt phn t x vo cy
Vic thm mt phn t X vo cy phi bo m iu kin rng buc ca CNPTK.
Ta c th thm vo nhiu ch khc nhau trn cy, nhng nu thm vo mt nt l
s l tin li nht do ta c th thc hin qu trnh tng t thao tc tm kim. Khi
chm dt qu trnh tm kim cng chnh l lc tm c ch cn thm.
Hm insert tr v gi tr 1, 0, 1 khi khng b nh, gp nt c hay thnh cng:
int insertNode(TREE &T, Data X)
{
if(T) {
if(T->Key == X) return 0; // c
if(T->Key > X)
return insertNode(T->pLeft, X);
else
return insertNode(T->pRight, X);
}
T = new TNode;
if(T == NULL) return -1; //thiu b nh
T->Key = X;
T->pLeft =T->pRight = NULL;
return 1; //thm vo thnh cng
}
V d: thm phn t 50


3.3.2.4. Hy 1 phn t
Vic hy mt phn t ra khi cy phi m bo iu kin rng buc ca cy
nh phn tm kim
C 3 trng hp khi hy nt X c th xy ra:
X l nt l.
X ch c 1 con (tri hoc phi).
X c c 2 con
Trng hp th nht: ch n gin hy X v n khng mc ni n phn t
no khc.

Trng hp th hai: trc khi hy X ta mc ni cha ca X vi con duy nht
ca n.

Trng hp cui cng: ta khng th hy trc tip do X c 2 con Ta s
hy gin tip. Thay v hy X, ta s tm mt phn t th mng Y. Phn t ny c ti
a mt con. Thng tin lu ti Y s c chuyn ln lu ti X. Sau , nt b hy
tht s s l Y ging nh 2 trng hp u.
Vn l phi chn Y sao cho khi lu Y vo v tr ca X, cy vn l CNPTK.
C 2 phn t tha mn yu cu:
Phn t nh nht (tri nht) trn cy con phi.
Phn t ln nht (phi nht) trn cy con tri.
Vic chn la phn t no l phn t th mng hon ton ph thuc vo thch
ca ngi lp trnh. y, chng ta s chn phn t (phi nht trn cy con tri
lm phn t th mng.
Hy xem v d di y d hiu hn

Sau khi hy phn t X=18 ra khi cy tnh trng ca cy s nh trong hnh di
y (phn t 23 l phn t th mng):
Hm delNode tr v gi tr 1, 0 khi hy thnh cng hoc khng c X trong cy:
int delNode(TREE &T, Data X)
{
if(T==NULL) return 0;
if(T->Key > X)
return delNode (T->pLeft, X);
if(T->Key < X)
return delNode (T->pRight, X);
else { //T->Key == X
TNode* p = T;
if(T->pLeft == NULL)
T = T->pRight;
else if(T->pRight == NULL)
T = T->pLeft;
else { //T c c 2 con
TNode* q = T->pRight;
searchStandFor(p, q);
}
delete p;
}
}
Trong , hm searchStandFor c vit nh sau:
//Tm phn t th mng cho nt p
void searchStandFor(TREE &p, TREE &q)
{
if(q->pLeft)
searchStandFor(p, q->pLeft);
else {
p->Key = q->Key;
p = q;
q = q->pRight;
}
}
3.3.2.5. To mt cy nh phn tm kim
Ta c th to mt cy nh phn tm kim bng cch lp li qu trnh thm 1
phn t vo mt cy rng.
3.3.2.6. Hy ton b cy
Vic ton b cy c th c thc hin thng qua thao tc duyt cy theo
th t sau. Ngha l ta s hy cy con tri, cy con phi ri mi hy nt gc.
voi d r emoveTr ee( TREE &T)
{ i f ( T)
{ r emoveTr ee( T- >pLef t ) ;
r emoveTr ee( T- >pRi ght ) ;
del et e( T) ;
}
}
3.3.3. nh gi
Tt c cc thao tc searchNode, insertNode, delNode trn CNPTK u c
phc tp trung bnh O(h), vi h l chiu cao ca cy
Trong trong trng hp tt nht, CNPTK c n nt s c cao h = log
2
(n). Chi ph
tm kim khi s tng ng tm kim nh phn trn mng c th t.
Tuy nhin, trong trng hp xu nht, cy c th b suy bin thnh 1 DSLK (khi
m mi nt u ch c 1 con tr nt l). Lc cc thao tc trn s c phc tp
O(n). V vy cn c ci tin cu trc ca CNPTK t c chi ph cho cc thao
tc l log
2
(n)

3.4. Cy nh phn cn bng
3.4.1. Cy cn bng hon ton
3.4.1.1. nh ngha
Cy cn bng hon ton l cy nh phn tm kim m ti mi nt ca n, s
nt ca cy con tri chnh lch khng qu mt so vi s nt ca cy con phi
3.4.1.2. nh gi
Mt cy rt kh t c trng thi cn bng hon ton v cng rt d mt
cn bng v khi thm hay hy cc nt trn cy c th lm cy mt cn bng (xc
sut rt ln), chi ph cn bng li cy ln v phi thao tc trn ton b cy.
Tuy nhin nu cy cn i th vic tm kim s nhanh. i vi cy cn bng
hon ton, trong trng hp xu nht ta ch phi tm qua log
2
n phn t (n l s nt
trn cy).
Sau y l v d mt cy cn bng hon ton (CCBHT):

CCBHT c n nt c chiu cao h log
2
n. y chnh l l do cho php bo
m kh nng tm kim nhanh trn CTDL ny.
Do CCBHT l mt cu trc km n nh nn trong thc t khng th s
dng. Nhng u im ca n li rt quan trng. V vy, cn a ra mt CTDL
khc c c tnh ging CCBHT nhng n nh hn.
Nh vy, cn tm cch t chc mt cy t trng thi cn bng yu hn v
vic cn bng li ch xy ra phm vi cc b nhng vn phi bo m chi ph cho
thao tc tm kim t mc O(log
2
n).
3.4.2. Cy cn bng
3.4.2.1. nh ngha
Cy nh phn tm kim cn bng l cy m ti mi nt ca n cao ca cy
con tri v ca cy con phi chnh lch khng qu mt.
Di y l v d cy cn bng (lu , cy ny khng phi l cy cn bng hon
ton):

D dng thy CCBHT l cy cn bng. iu ngc li khng ng.

3.4.2.2. Lch s cy cn bng (AVL Tree)
AVL l tn vit tt ca cc tc gi ngi Nga a ra nh ngha ca cy
cn bng Adelson-Velskii v Landis (1962). V l do ny, ngi ta gi cy nh
phn cn bng l cy AVL. T nay v sau, chng ta s dng thut ng cy AVL
thay cho cy cn bng.
T khi c gii thiu, cy AVL nhanh chng tm thy ng dng trong
nhiu bi ton khc nhau. V vy, n mau chng tr nn thnh hnh v thu ht
nhiu nghin cu. T cy AVL, ngi ta pht trin thm nhiu loi CTDL hu
dng khc nh cy -en (Red-Black Tree), B-Tree,

3.4.2.3. Chiu cao ca cy AVL
Mt vn quan trng, nh cp n phn trc, l ta pji khng
nh cy AVL n nt phi c chiu cao khong log
2
(n).
nh gi chnh xc v chiu cao ca cy AVL, ta xt bi ton: cy AVL
c chiu cao h s phi c ti thiu bao nhiu nt ?
Gi N(h) l s nt ti thiu ca cy AVL c chiu cao h.
Ta c N(0) = 0, N(1) = 1 v N(2) = 2.
Cy AVL ti thiu c chiu cao h s c 1 cy con AVL ti thiu chiu cao h-
1 v 1 cy con AVL ti thiu chiu cao h-2. Nh vy:
N(h) = 1 + N(h-1) + N(h-2) (1)
Ta li c: N(h-1) > N(h-2)
Nn t (1) suy ra:
N(h) > 2N(h-2)
N(h) > 2
2
N(h-4)

N(h) > 2
iN
(h-2i)
N(h) > 2
h/2-1
h < 2log
2
(N(h)) + 2
Nh vy, cy AVL c chiu cao O(log
2
(n)).
V d: cy AVL ti thiu c chiu cao h=4


3.4.2.4. Cu trc d liu cho cy AVL
Ch s cn bng ca mt nt:
nh ngha: Ch s cn bng ca mt nt l hiu ca chiu cao cy con phi
v cy con tri ca n.
i vi mt cy cn bng, ch s cn bng (CSCB) ca mi nt ch c th
mang mt trong ba gi tr sau y:
CSCB(p) = 0 <=> cao cy tri (p) = cao cy phi (p)
CSCB(p) = 1 <=> cao cy tri (p) < cao cy phi (p)
CSCB(p) =-1 <=> cao cy tri (p) > cao cy phi (p)
tin trong trnh by, chng ta s k hiu nh sau:
p->balFactor = CSCB(p);
cao cy tri (p) k hiu l hL
cao cy phi(p) k hiu l hR
kho st cy cn bng, ta cn lu thm thng tin v ch s cn bng ti
mi nt. Lc , cy cn bng c th c khai bo nh sau:
t ypedef st r uct t agAVLNode {
char balFactor; //Ch s cn bng
Dat a key;
st r uct t agAVLNode* pLef t ;
st r uct t agAVLNode* pRi ght ;
}AVLNode;
t ypedef AVLNode *AVLTr ee;
tin cho vic trnh by, ta nh ngha mt s hng s sau:
#def i ne LH - 1 //Cy con tri cao hn
#def i ne EH - 0 //Hai cy con bng nhau
#def i ne RH 1 //Cy con phi cao hn
3.4.2.5. nh gi cy AVL
Cy cn bng l CTDL n nh hn hn CCBHT v ch khi thm hy lm
cy thay i chiu cao cc trng hp mt cn bng mi c kh nng xy ra.
Cy AVL vi chiu cao c khng ch s cho php thc thi cc thao tc
tm thm hy vi chi ph O (log
2
(n)) v bo m khng suy bin thnh O(n).

3.5. Cy tng qut
3.5.1. nh ngha
Cy tng qut l cy cc nt trn cy c s con l bt k
V d cho cy tam phn cc k t




Gc















3.5.2. Biu din cy tng qut bng danh sch lin kt
Mi nt ca cy l mt bn ghi, ngoi cc trng cha d liu ca bn thn
n, cn c thm cc trng lin kt khc lu tr a ch ca cc nt con
3.5.3. Cc php duyt trn cy tng qut
Tng t nh cy nh phn, i vi cy tng qut cng c 3 php duyt c
bn l:
- Duyt cy theo th t trc (i vi gc): Kiu duyt ny trc tin
thm nt gc, sau ln lt thm cc nt ca cc cy con
. Gc
. Cy con tri nht
. Cc cy con phi
- Duyt cy theo th t gia: Kiu duyt ny trc tin thm nt cc
nt ca cy con tri nht, sau thm nt gc ri n cc cy con phi.
. Cy con tri nht
. Gc
. Cy con phi
- Duyt cy theo th t sau:Kiu duyt ny trc tin thm cc nt
ca cy con tri nht, sau thm cc nt ca cc cy con phi, cui cng thm
nt gc
. Cy con tri nht
. Cc cy con phi
. Gc

3.5.4. Cy nh phn tng ng
Nhc im ca cc cu trc cy tng qut l bc ca cc nt trn cy c th
dao ng trong mt bin ln vic biu din gp nhiu kh khn v lng ph.
Hn na, vic xy dng cc thao tc trn cy tng qut phc tp hn trn cy nh
A
C D
G
B
F E H I
J K
phn nhiu. V vy, thng nu khng qu cn thit phi s dng cy tng qut,
ngi ta chuyn cy tng qut thnh cy nh phn.
Ta c th bin i mt cy bt k thnh mt cy nh phn theo qui tc sau:
- Gi li nt con tri nht lm nt con tri.
- Cc nt con cn li chuyn thnh nt con phi.
- Nh vy, trong cy nh phn mi, con tri th hin quan h cha con v con
phi th hin quan h anh em trong cy tng qut ban u.
Ta c th xem v d di y thy r hn qui trnh.
Gi s c cy tng qut nh hnh bn di:

Cy nh phn tng ng s nh sau:


Mt v d quen thuc trong tin hc v ng dng ca duyt theo th t sau l vic
xc nh tng kch thc ca mt th mc trn a nh hnh sau:

Mt ng dng quan trng khc ca php duyt cy theo th t sau l vic tnh ton
gi tr ca biu thc da trn cy biu thc nh hnh di:

(3 + 1)3/(9 5 + 2) (3(7 4) + 6) = 13
Mt v d hay v cy nh phn l cy biu thc. Cy biu thc l cy nh
phn gn nhn, biu din cu trc ca mt biu thc (s hc hoc logic). Mi php
ton hai ton hng (chng hn, +, -, *, /) c biu din bi cy nh phn, gc ca
n cha k hiu php ton, cy con tri biu din ton hng bn tri, cn cy con
phi biu din ton hng bn phi. Vi cc php ton mt hng nh ph nh
hoc ly gi tr i hoc cc hm chun nh exp ( ) hoc cos ( ) th cy con bn
tri rng. Cn vi cc php ton mt ton hng nh php ly o hm ( ) hoc
hm giai tha ( )! Th cy con bn phi rng.
Hnh bn minh ha mt s cy biu thc.
Ta c nhn xt rng, nu i qua cy biu thc theo th t trc ta s c
biu thc Balan dng prefix (k hiu php ton ng trc cc ton hng). Nu i
qua cy biu thc theo th t sau, ta c biu thc Balan dng postfix (k hiu php
ton ng sau cc ton hng); cn theo th t gia ta nhn c cch vit thng
thng ca biu thc (k hiu php ton ng gia hai ton hng).

+ exp !



a a+b b exp(x) x n n!

/ or


a + < >=


b c a b c d

a/(b+c) (a<b) or (c>=d)
---o-O-o---
BI TP CHNG 3
BI TP L THUYT
Bi 1. Hy trnh by cc vn sau y:
a. nh ngha v c im ca cy nh phn tm kim.
b. Thao tc no thc hin tt trong kiu ny.
c. Hn ch ca kiu ny l g ?
Bi 2. Xt thut gii to cy nh phn tm kim. Nu th t cc kha nhp vo l
nh sau:
8 3 5 2 20 11 30 9 18 4
th hnh nh cy to c nh th no ?
Sau , nu hy ln lt cc nt theo th t nh sau :
15, 20
th cy s thay i nh th no trong tng bc hy, v s (nu r phng php
hy khi nt c c 2 cy con tri v phi)
Bi 3. p dng thut gii to cy nh phn tm kim cn bng to cy vi th t
cc kha nhp vo l nh sau :
5 7 2 1 3 6 10
th hnh nh cy to c nh th no ? Gii thch r tng tnh hung xy ra khi
thm tng kha vo cy v v hnh minh ha.
Sau , nu hy ln lt cc nt theo th t nh sau :
5, 6, 7, 10
th cy s thay i nh th no trong tng bc hy, v s v gii thch
Bi 4. Vit cc hm xc nh cc thng tin ca cy nh phn T:
a. S nt l
b. S nt c ng 1 cy con
c. S nt c ng 2 cy con
d. S nt c kha nh hn x (gi s T l CNPTK)
e. S nt c kha ln hn x (gi s T l CNPTK)
f. S nt c kha ln hn x v nh hn y (T l CNPTK)
g. Chiu cao ca cy
h. In ra tt c cc nt tng (mc) th k ca cy T
i. In ra tt c cc nt theo th t t tng 0 n tng th h-1 ca cy T (h l chiu
cao ca T).
j. Kim tra xem T c phi l cy cn bng hon ton khng.
k. lch ln nht trn cy. ( lch ca mt nt l lch gia chiu cao ca
cy con tri v cy con phi ca n. lch ln nht trn cy l lch ca nt c
lch ln nht).
Bi 5. Cho mt hnh ch nht nh hnh v, hnh ch nht ny c th c chia
thnh 2 phn bng nhau, nu c chia thnh hai phn, cc phn ny s c nh
s theo th t nh hnh v :

Mi phn c th 1 trong 2 trng thi :
Trng thi a: khng b phn chia
Trng thi b: tip tc phn chia thnh 2 phn bng nhau, mi phn c th trng
thi a hay b.
Gi thit s phn chia l hu hn.
a. Tm Cu trc d liu thch hp nht biu din hnh trn, nh ngha CTDL
trong ngn ng Pascal
b. Gi s c 1 CTDL tng ng c to, vit chng trnh in ra danh sch cc
hnh ch nht khng b phn chia .
V d: trong hnh v trn, ta c (2.2.2.1), (2.2.1), (2.1), (1)
Bi 6. Xy dng cu trc d liu biu din cy N-phn (2<N 20).
a. Vit chng trnh con duyt cy N-phn v to sinh cy nh phn tng ng vi
cc kho ca cy N-phn.
b. Gi s kha c lu tr chim k byte, mi con tr chim 4 byte, vy dng cy
nh phn thay cy N-phn th c li g trong vic lu tr cc kho ?
Bi 7. Vit hm chuyn mt cy N-phn thnh cy nh phn.
Bi 8.Vit hm chuyn mt cy nh phn tm kim thnh xu kp c th t tng
dn.
Bi 9.Gi s A l mt mng cc s thc c th t tng. Hy vit hm to mt
cy nh phn tm kim c chiu cao thp nht t cc phn t ca A.
Bi 10.Vit chng trnh con o nhnh (nhnh tri ca mt nt trn cy tr thnh
nhnh phi ca nt v ngc li ) mt cy nh phn .
Bi 11.Hy v cy AVL vi 12 nt c chiu cao cc i trong tt c cc cy AVL
12 nt.
Bi 12.Tm mt dy N kha sao cho khi ln lt dng thut ton thm vo cy
AVL xen cc kho ny vo cy s phi thc hin mi thao tc cn bng li(
LL,LR, RL,RR) t nht mt ln.
Bi 13.Hy tm mt v d v mt cy AVL c chiu cao l 6 v khi hy mt nt l
(ch ra c th) vic cn bng li lan truyn ln tn gc ca cy. V ra tng bc
ca qu trnh hy v cn bng li ny.

BI TP THC HNH:
Bi 14.Ci t chng trnh m phng trc quan cc thao tc trn cy nh phn tm
kim.
Bi 15.Ci t chng trnh m phng trc quan cc thao tc trn cy AVL.
Bi 16.Vit chng trnh cho php to, tra cu v sa cha t in Anh- Vit.
Bi 17.Vit chng trnh kho st tn xut xy ra vic cn bng li ca cc thao tc
thm v hy mt phn t trn cy AVL bng thc nghim. Chng trnh ny phi
cho php to lp ngu nhin cc cy AVL v xa ngu nhin cho n khi cy rng.
Qua cho bit s ln xy ra cn bng li trung bnh ca tng thao tc.
---o-O-o---

You might also like