23
Chương 3. CÂY Trong chương này chúng ta snghiên cu mô hình dliu cây. Cây là mt cu trúc phân cp trên mt tp hp nào đó các đối tượng. Mt ví dquen thuc vcây, đó là cây thư mc.Cây được sdng rng rãi trong rt nhiu vn đề khác nhau. Chng hn, nó được áp dng để tchc thông tin trong các hcơ sdliu, để mô tcu trúc cú pháp ca các chương trình ngun khi xây dng các chương trình dch. Rt nhiu các bài toán mà ta gp trong các lĩnh vc khác nhau được quy vvic thc hin các phép toán trên cây. Trong chương này chúng ta strình bày định nghĩa và các khái nim cơ bn vcây. Chúng ta cũng sxét các phương pháp biu din cây và sthc hin các phép toán cơ bn trên cây. Sau đó chúng ta snghiên cu kmt dng cây đặc bit, đó là cây tìm kiếm nhphân. 3.1. Mt skhái nim 3.1.1. Các định nghĩa - Cây: là mt tp hp hu hn các phn t, mi phn tgi là mt nút (Node), trong đó có mt nút đặc bit gi là gc (Root), gia các nút có mt quan hphân cp gi là quan hcha con Ví dcho cây các ký tMc 1 gc Mc 2 Mc 3 Mc 4 A: nút gc A là nút cha ca B, C, D B, C, D là các nút con ca A - Cây rng: cây không có nút nào c- Cp ca nút: snút con ca nó, vd nút B có cp là 2 - Cp ca cây: cp ln nht ca các nút có trên cây. Cây có cp n gi là cây n phân, ví dcây trên là cây tam phân - Lá: nút có cp là 0, ví dcác là F, C, G, J - Mc: Nút gc có mc là 1. Nút cha có mc i thì nút con có mc i+1 - Chiu cao ca cây: mc ln nht trên cây, ví dcây trên có chiu cao 4 - Nút trước, nút sau: Nút x là nút trước ca nút y nếu cây con gc x có cha nút y, khi đó y là nút sau ca nút x. ví dD là nút trước ca nút J A C D G B F E H I J K

Cau Truc Cay

Embed Size (px)

Citation preview

  • 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

    FE H I

    J K

  • - ng i (path): Dy nt u1, u2, . . . uk m nt bt k ui l cha ca nt ui+1 th dy l ng i t nt u1 n nt uk - 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 T1 v T2 l hai cy nh phn khng ct nhau ( )= 21 TT v r l mt nh mi khng thuc T1, T2. Khi ta c th thnh lp mt cy nh phn mi T vi gc r c T1 l cy con bn tri, T2 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 2I. S nt l 2h-1, vi h l chiu cao ca cy. Chiu cao ca cy h log2(s nt trong cy). S nt trong cy 2h-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 * searchNode(TREE Root, Data x)

    { NODE *p = Root;

    while (p != NULL)

    {

  • if(x == p->Key) return p; else

    if(x < p->Key) p = p->pLeft; else p = p->pRight;

    }

    return 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(log2n) .

    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.

    void removeTree(TREE &T)

    { if(T)

    { removeTree(T->pLeft);

    removeTree(T->pRight);

    delete(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 = log2(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 log2(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 log2n 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 log2n. 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(log2n).

    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 log2(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) > 22N(h-4)

    N(h) > 2iN(h-2i)

    N(h) > 2h/2-1

    h < 2log2(N(h)) + 2 Nh vy, cy AVL c chiu cao O(log2(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:

    typedef struct tagAVLNode {

    char balFactor; //Ch s cn bng

    Data key;

    struct tagAVLNode* pLeft;

    struct tagAVLNode* pRight;

    }AVLNode;

    typedef AVLNode *AVLTree;

    tin cho vic trnh by, ta nh ngha mt s hng s sau:

    #define LH -1 //Cy con tri cao hn

    #define EH -0 //Hai cy con bng nhau #define 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 (log2(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

    FE 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=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

  • 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---