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 { Data Key;//Data l kiu d liu ng vi thng tin lu ti nt 3 tagTNODE

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); } } Thm cc nt trn cy theo th t sau (Left-Right-Node) void LRN(TREE Root) { //X l tng ng theo nhu cu

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