Cay Nhi Phan

  • Upload
    nih-ngu

  • View
    220

  • Download
    3

Embed Size (px)

Citation preview

n v qun l trc tip (nu c) C s dy ngh

TRNG CAO NG NGH TP H CH MINH

S gio n

L thuytMn hc: Cu trc d liu v gii thut Lp : Kho : H v tn gio vin : Nguyn Tng Ninh Nm hc: 2011-2012

Quyn s:.......

Gio n s: 1

Thi gian thc hin: 5 tit Tn chng: Cu trc cy Thc hin ngy 15 thng 10 nm 2011

Tn bi: Cy nh phn tm kim Mc tiu ca bi: Sau khi hc xong bi ny ngi hc c kh nng: Trnh by c khi nim cy nh phn tm kim v cy AVL. Bit c cc thao tc trn cy nh phn tm kim v cy AVL.

p dng vo bi tp. dng v phng tin dy hc My tnh, my chiu, bng phn, gao n.

I. n nh lp hc: + Kt ni my chiu.

Thi gian: 3 pht

+ Sp xp ch ngi cho hc sinh ngi gn my chiu, quan st c d dng. II. Thc hin bi hc TT Ni dung Hot ng dy hc Hot ng ca gio vin Hot ng ca hc sinh Thi gian

1

Dn nhp vic thao tc trn cy c d dng

3 pht

cng nh l ci thin tc truy xut d liu trn cy th ngi ta ngh ti vic t chc d liu trn cy nh th no thun li hn. V nh th ngi - Ging gii ta a ra khi nim v cy nh phn tm kim gii quyt vn ny. - Nghe ging

2

Ging bi mi. I. Cy nh phn tm kim 1. nh ngha Cy nh phn tm kim (NPTK) - Ging bi l cy nh phn m kho ti mi nt cy ln hn kho ca tt c cc nt thuc cy con bn tri v nh hn kho ca tt c cc nt thuc cy con bn phi.-

- Nghe ging

10 pht

a ra m hnh v d, gii thch v cy nh phn tm kim. Nhn xt: Trn cy NPTK khng c hai nt cng kho. Cy con ca mt cy NPTK l cy NPTK. Khi duyt trung t (InOrder) cy NPTK ta c mt dy c th t tng.- Ging bi.

-

- Ging gii

- Tham gia pht biu

5 pht

3 pht

- Nghe ging

-

Ci t cy nh phn tm kim.

- Gii thich code

3 pht

- Lng nghe, pht biu 2. Cc thao tc trn cy nh phn tm kim. a. Tm kim trn cy NPTK - Chiu slide Nu ra vn : tm kim mt nt c kha x trn cy cho sn. Nu tng gii quyt vn . Cho v d minh ha. Ci t bng code. b. Thm nt trn cy NPTK. - Chiu slide Nu ra vn : tm kim mt nt c kha x trn cy cho sn. Nu tng gii quyt vn . Cho v d minh ha.-

- Ging gii

- Nghe ging - Pht biu

15 pht

15 pht - Nghe ging - Pht biu

- Ging gii

Ci t bng code, gi

thch c. Xa nt trn cy NPTK Nu ra vn : tm kim mt nt c kha x trn cy cho sn. a ra cc trng hp. Nu tng gii quyt vn cho tng trng hp. Cho v d minh ha. Ci t bng code. - Chiu slide - Ging gii - Nghe ging - Pht biu 15 pht

3. Cng c kin thc v kt thc

bi. Thc hin thao tc tm kim trn cy NPTK. Thc hin thao tc thm nt vo cy NPTK. Thc hin thao tc xa nt trn cy NPTK Cho v d tng qut.

- Ging bi - Nghe ging, pht biu.

10 pht

4. Hng dn t hc. - Cho sinh vin Cho bi tp v hng dn cch gi quyt. Yu cu hc sinh ci t cc thao tc trn cy NPTK. - Hng dn. - Sa bi cho sinh vin - Nghe hng dn - Lm bi tp lm bi tp. 10 pht

Ngun ti liu tham kho

1. Trn Hnh Nhi, Dng Anh c, gio trnh cu trc d liu v gii thut, Trng i Hc Cng Ngh Thng Tin. 2. L Vn Vinh, bi ging cu trc d liu 1, Trng i Hc S Phm K Thut TP.HCM.

BI GING:

Cy Nh Phn Tm Kim1. nh ngha. Cy nh phn tm kim (NPTK) l cy nh phn m kho ti mi nt cy ln hn kho ca tt c cc nt thuc cy con bn tri v nh hn kho ca tt c cc nt thuc cy con bn phi. v d:

Hnh minh ha cy nh phn tm kim. Nhn xt:

Trn cy NPTK khng c hai nt cng kho. Cy con ca mt cy NPTK l cy NPTK. Khi duyt trung t (InOrder) cy NPTK ta c mt dy c th t tng. Chng hn duyt trung t cy trn ta c dy: 5, 10, 15, 17, 20, 22, 30, 35, 42.

Ci t cy nh phn tm kim:

Cy NPTK l mt cy nh phn. Do ta c th p dng cc cch ci t nh trnh by trong phn cy nh phn. Ch khc trong cc gii thut thao tc trn cy NPTK nh tm kim, thm hoc xo mt nt trn cy NPTK lun m bo tnh cht cu cy NPTK. Mt cch ci t cy NPTK thng gp l ci t bng con tr. Mi nt gm c 3 phn: mt trng cha kho, hai trng kia l hai con tr tr n hai nt con (nu khng c nt con no th gn con tr bng NULL) Code: typedef KeyType; typedef struct Node { KeyType Key; Node* Left,Right; } typedef Node* Tree; To mt cy rng: Ta cho con tr qun l nt gc (Root) ca cy bng NULL. void MakeNullTree(Tree *Root) { (*Root)=NULL; }

2. Cc thao tc trn cy nh phn tm kim. a. Tm kim trn cy NPTK: Vn l ta mun xc nh xem mt nt c kha l x c nm trn cy ca ta hay khng? tng: ta tin hnh cc nh sau: Nu nt gc bng NULL th khng c kho x trn cy. Nu x bng kho ca nt gc th gii thut dng v ta tm c nt cha kho x. Nu x ln hn kho ca nt gc th ta tin hnh vic tm kho x

trn cy con bn phi. Nu x nh hn kho ca nt gc th ta tin hnh vic tm kho x

trn cy con bn tri. V d: tm nt c kha l 30 trong cy sau:

- So snh 30 vi kho nt gc l 60, v 30 < 60 vy ta tm tip trn cy con bn tri, tc l cy c nt gc c kho l 25. - So snh 30 vi kho ca nt gc l 25, v 30 > 25 vy ta tm tip trn cy con bn phi, tc l cy c nt gc c kho l 40. - So snh 30 vi kho ca nt gc l 40, v 30 < 40 vy ta tm tip trn cy con bn tri, tc l cy c nt gc c kho l 30. - So snh 30 vi kho nt gc l 30, 30 = 30 vy n y gii thut dng v ta tm c nt cha kho cn tm.

Hm di y tr v kt qu l con tr tr ti nt cha kho x hoc NULL nu khng tm thy kho x trn cy TKNP. Code: NodePtr Search(NodePtr node, int x) { NodePtr p = node; if (p != NULL) if (node->info >x) p = Search(node->left, x); else if (node->info < x) p = Search(node->right, x); return p; } Ni s v cch thc t chc ca cy nh phn sao cho tm kim nhanh nht. l cy phi cn bng.

b. Thm mt nt vo cy nh phn tm kim. Theo nh ngha cy nh phn tm kim ta thy trn cy nh phn tm kim khng c hai nt c cng mt kho. Do nu ta mun thm mt nt c kho x vo cy TKNP th trc ht ta phi tm kim xc nh c nt no cha kho x cha. Nu c th gii thut kt thc (khng lm g c!). Ngc li, s thm mt nt mi cha kho x ny. Vic thm mt kho vo cy NPTK l vic tm kim v thm mt nt, tt nhin, phi m bo cu trc cy NPTK khng b ph v. tng c th nh sau:

tng: Ta tin hnh t nt gc bng cch so snh kha cu nt gc vi kho x. Nu nt gc bng NULL th kho x cha c trn cy, do ta thm mt nt mi cha kho x.

Nu x bng kho ca nt gc th gii thut dng, trng hp ny ta khng thm nt.

Nu x ln hn kho ca nt gc th ta tin hnh gii thut ny trn cy con bn phi.

Nu x nh hn kho ca nt gc th ta tin hnh gii thut ny trn cy con bn tri.

V d: thm mt nt c kha bng 70 vo cy sau:

- So snh 70 vi kho ca nt gc l 60, v 70 > 60 vy ta xt tip n cy bn phi, tc l cy c nt gc c kho l 65. - So snh 70 vi kho ca nt gc l 65, v 70 > 65 vy ta xt tip n cy bn phi,

tc l cy c nt gc c kho l 17. Nt con bn phi bng NULL, chng t rng kho 70 cha c trn cy, ta thm nt mi cha kho 70 v nt mi ny l con bn phi ca nt c kho l 65.

Code: void Insert(NodePtr pTree, int x) { NodePtr node; if ( pTree == NULL) return; if (pTree->info == x) return; if (pTree->info > x) { if (pTree->left == NULL) {

node = CreateNode(x); pTree->left = node; } else } else if (pTree->right == NULL) { node = CreateNode(x); pTree->right = node; } else } Insert(pTree->right, x); Insert(pTree->left, x);

c.Xa mt nt c kha x khi cy nh phn tm kim. Cc trng hp: Xa nt ch l nt l. Xa nt c mt nt con. Xa nt c hai nt con.

tng:Vic xo mt nt nh vy, tt nhin, ta phi bo m cu trc cy TKNP khng b ph v. Nu khng tm thy nt cha kho x th gii thut kt thc. Nu tm gp nt N c cha kho x, ta c ba trng hp Nu N l l ta thay n bi NULL.

N ch c mt nt con ta thay n bi nt con ca n. N c hai nt con ta thay n bi nt ln nht trn cy con tri ca n (nt cc phi ca cy con tri) hoc l nt b nht trn cy con phi ca n (nt cc tri ca cy con phi).

V d: xa cc nt c kha 70, 19, 25 trong cy sau:

Xa 70:

Xa 19:

Xa 25:

Hoc:

Code: int Remove(NodePtr &T, int x) { if ( T == NULL) return FALSE; // khng tm thy nt cn xo if (T->info >x) // tm bn tri return Remove(T->left, x); if (T->info right, x); NodePtr p, f, rp;

p = T; // p bin tm tr n T if ( T->left == NULL) // c 1 cy con T = T->right; else if (T->right == NULL) // c 1 cy con T = T->left; else { // trng hp c 2 con chn nt nh nht bn con phi f = p; // f lu cha ca rp rp = p->right; // rp bt u t p->right while ( rp->left != NULL) { f = rp; // lu cha ca rp rp = rp->left; // rp qua bn tri } // kt thc khi rp l nt c nt con tri l null p->info = rp->info; // i gi tr ca p v rp if ( f == p) // nu cha ca rp l p f->right = rp->right; else // f != p f->left = rp->right; p = rp; // p tr n phn t th mng rp } FreeNode(p); // xo nt p

return TRUE;