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;