You are on page 1of 12

Bi 4:CY, CY NH PHN, CY NH PHN TM KIM

1. Cu trc cy
1.1. nh ngha 1:
Cy l mt tp hp T cc phn t (nt trn cy) trong c 1 nt c
bit T0 c gi l gc, cc nt cn khc c chia thnh nhng tp ri
nhau T1, T2 , ... , Tn theo quan h phn cp trong Ti cng l mt cy.
Nt cp i s qun l mt s nt cp i+1. Quan h ny ngi ta cn
gi l quan h cha-con.
1.2. Mt s khi nim c bn
- Bc ca mt nt: l s cy con ca nt .
- Bc ca mt cy: l bc ln nht ca cc nt trong cy. Cy c bc n th gi
l cy n-phn.
- Nt gc: nt khng c nt cha.
- Nt l: nt c bc bng 0 .
- Nt nhnh: nt c bc khc 0 v khng phi l gc .
- Mc ca mt nt:
Mc (T0 ) = 1.
Gi T1, T2, T3, ... , Tn l cc cy con ca T0
Mc (T1) = Mc (T2) = ... = Mc (Tn) = Mc (T0) + 1.
- di ng i t gc n nt x: l s nhnh cn i qua k t gc n x.
- Chiu cao h ca cy: mc ln nht ca cc nt l.
1.3. Mt s v d v i tng cc cu trc dng cy
- S t chc ca mt doanh nghip
- S t chc cy th mc

2. CY NH PHN
2.1 nh ngha
Cy nh phn l cy m mi nt c ti a 2 cy con

Cy nh phn c th ng dng trong nhiu bi ton thng dng. V d


di y cho ta hnh nh ca mt biu thc ton hc:

2.2. Mt s tnh cht ca cy nh phn:


- S nt mc I 2I-1.
- S nt mc l 2h-1, vi h l chiu cao ca cy.
- Chiu cao ca cy h log2N (N - s nt trn trong cy).

2.3. Biu din cy nh phn T


Cy nh phn l mt cu trc bao gm cc phn t (nt) c kt ni
vi nhau theo quan h cha-con vi mi cha c ti a 2 con. biu din
cy nh phn ta chn phng php cp pht lin kt. ng vi mt nt, ta
dng mt bin ng lu tr cc thng tin:
+ Thng tin lu tr ti nt.
+ a ch nt gc ca cy con tri trong b nh.
+ a ch nt gc ca cy con phi trong b nh.
Khai bo nh sau:
typedef struct

tagTNODE

{
Data Key;//Data l kiu d liu ng vi thng tin lu ti nt
3

struct tagNODE *pLeft, *pRight;


}TNODE;
typedef TNODE

*TREE;

2.4. Cc thao tc trn cy nh phn


Thm cc nt trn cy theo th t trc (Node-Left-Right)
void NLR(TREE Root)
{
if (Root != NULL)
{
<X l Root>;
//X l tng ng theo nhu cu
NLR(Root->pLeft);
NLR(Root->pRight);
}
}
Thm cc nt trn cy theo th t gia (Left- Node-Right)
void LNR(TREE Root)
{
if (Root != NULL)
{
LNR(Root->Left);
<X l Root>;
LNR(Root->Right);

//X l tng ng theo nhu cu

}
}
Thm cc nt trn cy theo th t sau (Left-Right-Node)
void LRN(TREE Root)
{

if (Root != NULL)
{
LRN(Root->Left);
LRN(Root->Right);
<X l Root>;
//X l tng ng theo nhu cu
}
}
ng dng phng php ny trong vic tnh tng kch thc ca th mc.
ng dng tnh ton gi tr ca biu thc.

(3 + 1)3/(9 5 + 2) (3(7 4) + 6) = 13

2.5. Biu din cy tng qut bng cy nh phn


Nhc im ca cc cu trc cy tng qut l bc ca cc nt trn cy
c th rt khc nhau 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
phn nhiu.
V vy, nu khng qu cn thit phi s dng cy tng qut, ngi ta
s bin i 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 nt con tri nht lm con tri.
- Cc nt con cn li bin i thnh nt con phi.
VD: Gi s c cy tng qut nh hnh sau:

Cy nh phn tng ng s nh sau:


2.6. Mt cch biu din cy nh phn khc
i khi, trn cy nh phn, ngi ta quan tm n c quan h chiu
cha con. Khi , cu trc cy nh phn c th nh ngha li nh sau:
6

typedef struct tagTNode


{
DataType Key;
struct tagTNode* pParent;
struct tagTNode* pLeft;
struct tagTNode* pRight;
}TNODE;
typedef TNODE

*TREE;

3. CY NH PHN TM KIM
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. Chi
ph tm kim trung bnh ch khong log2N.
7

Trong thc t, khi xt n cy nh phn ch yu ngi ta xt CNPTK.


3.2. Cc thao tc trn cy
3.2.1. Thm cc nt trn cy
3.2.2. Tm mt phn t x trong cy
TTon:
D dng thy rng s ln so snh ti a phi thc hin tm phn t
X l bng h, vi h l chiu cao ca cy.
V d: Tm phn t 55

3.3.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 v tr khc nhau trn cy, nhng nu
thm vo mt nt l th s d nht do ta c th thc hin qu trnh tng t
thao tc tm kim. Khi chm dt qu trnh tm kim ta s tm c v tr cn
thm.
8

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
}
2.4. Hy mt phn t c kha x
Vic hy mt phn t X ra khi cy phi bo m iu kin rng buc ca
CNPTK.
C 3 trng hp khi hy nt X c th xy ra:
X - nt l.
X - ch c 1 cy con (tri hoc phi).
X c c 2 cy con
Trng hp th nht: ch n gin hy X v n khng mc ni n phn t
no khc.
9

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.

10

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 ti s chn phn t (phi nht
trn cy con tri lm phn t th mng.
VD:
Cn hy phn t 18.

2.5. NH GI
Tt c cc thao tc Tm kim, Thm mi, Xa 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 =
log2(n). Chi ph tm kim khi s tng ng tm kim nh phn trn
mng c th t.
11

Tuy nhin, trong trng hp xu nht, cy c th b suy bin thnh 1


DSLK. 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 log2(n).

12

You might also like