Professional Documents
Culture Documents
Mc tiu
Gii thiu khi nim cu trc cy. Cu trc d liu cy nh phn tm kim: t chc, cc thut ton, ng dng. Gii thiu cu trc d liu cy nh phn tm kim
Cu trc cy
Cu trc cy
nh ngha : cy l mt tp hp T cc phn t (gi l nt ca cy) trong c 1 nt c bit c gi l gc, cc nt cn li c chia thnh nhng tp ri nhau T1, T2 , ... , Tn theo quan h phn cp trong Ti cng l mt cy. Mi nt cp i s qun l mt s nt cp i+1. Quan h ny ngi ta cn gi l quan h cha-con.
Cu trc cy
Cu trc cy
Cu trc cy
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 (s cy con ti a ca mt nt thuc cy ). Cy c bc n th gi l cy n-phn. Nt gc : l nt khng c nt cha. Nt l : l nt c bc bng 0 . Nt nhnh : l nt c bc khc 0 v khng phi l gc . Mc ca mt nt : Mc (gc (T) ) = 0. Gi T1, T2, T3, ... , Tn l cc cy con ca T0 Mc (T1) = Mc (T2) = ... = Mc (Tn) = Mc (T0) + 1.
7
Cu trc cy
Mt s khi nim c bn
trong Px l di ng i t gc n X. di ng i trung bnh : PI = PT/n (n l s nt trn cy T). Rng cy: l tp hp nhiu cy trong th t cc cy l quan trng.
Khi nim
Cnh
Z B R
J A
gc nt
D
Cu trc cy
Mt s v d v i tng cc cu trc dng cy
S t chc ca mt cng ty
BB-Electronic Corp.
R&D
Kinh doanh
Tai vu
San xuat
Noi a
Quoc te
TV
CD
Amplier
Chau au
Cau truc D lieu - Cau truc cay
My
Cac nc
10
Cu trc cy
Mt s v d v i tng cc cu trc dng cy
Mc lc mt quyn sch
Student guide
Gii thieu
iem
Moi trng
NN LT
CT mau
Bai tap
Thc hanh
Thi
11
Cu trc cy
Nhn xt: Trong cu trc cy khng tn ti chu trnh
12
Cy nh phn
Cy nh phn
nh ngha: Cy nh phn l cy m mi nt c ti a 2 cy con Trong thc t thng gp cc cu trc c dng cy nh phn. Mt cy tng qut c th biu din thng qua cy nh phn.
14
Cy nh phn
Cy con tri Cy con phi
Hnh nh mt cy nh phn
Cau truc D lieu - Cau truc cay 15
Cy nh phn
Cy nh phn
Cy nh phn
18
Cy nh phn
Mt s tnh cht ca cy nh phn
S nt nm mc i
2i
Mc
Chiu cao cy h l mc cao nht + 1. 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.
ng i (path) Tn cc node ca qu trnh i t node gc theo cc cy con n mt node no .
19
Cy nh phn
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 s dng mt bin ng lu tr cc thng tin sau: 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.
20
Cy nh phn
21
Cy nh phn
n gin, ta khai bo cu trc d liu nh sau : typedef struct NODE { int data; NODE* left; NODE* right; }; typedef struct NODE* TREE; TREE root;
Cau truc D lieu - Cau truc cay 22
Cy nh phn
Duyt cy nh phn
C 3 kiu duyt chnh c th p dng trn cy nh phn: Duyt theo th t trc (NLR)- Preorder Duyt theo th t gia (LNR)- Inorder Duyt theo th t sau (LRN)- Postorder Tn ca 3 kiu duyt ny c t da trn trnh t ca vic thm nt gc so vi vic thm 2 cy con.
23
Cy nh phn
Duyt theo th t trc (Node-Left-Right)
Kiu duyt ny trc tin thm nt gc sau thm cc nt ca cy con tri ri n cy con phi. Th tc duyt c th trnh by n gin nh sau: void NLR(TREE root) { if (Root != NULL) { <X l Root>;//X l tng ng theo nhu cu NLR(root->left); NLR(root->right); } }
24
Cy nh phn
Duyt theo th t trc (Node-Left-Right)
25
H
N
J
O
K
P
Kt qu: A B D H I N E J O K C F L P G M
Cau truc D lieu - Cau truc cay 26
Cy nh phn
Duyt theo th t gia (Left- Node-Right)
Kiu duyt ny trc tin thm cc nt ca cy con tri sau thm nt gc ri n cy con phi. Th tc duyt c th trnh by n gin nh sau: void LNR(TREE root) { if (root != NULL) { LNR(root->left); <X l Root>; //X l tng ng theo nhu cu LNR(root->right); } }
27
H
N
J
O
K
P
Kt qu: H D N I B J O E K A F P L C M G
Cau truc D lieu - Cau truc cay 28
Kiu duyt ny trc tin thm cc nt ca cy con tri sau thm n cy con phi ri cui cng mi thm nt gc. Th tc duyt c th trnh by n gin nh sau: void LRN(TREE root) { if (root != NULL) { LRN(root->left); LRN(root->right); <X l Root>; //X l tng ng theo nhu cu } }
29
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
30
H
N
J
O
K
P
Kt qu: H N I D O J K E B P L F M G C A
Cau truc D lieu - Cau truc cay 31
Cy nh phn
Duyt theo th t sau (Left-Right-Node)
(3 + 1)3/(9 5 + 2) (3(7 4) + 6) = 13
Cau truc D lieu - Cau truc cay 32
Cy nh phn
Mt cch biu din cy nh phn khc
i khi, khi nh ngha cy nh phn, ngi ta quan tm n c quan h 2 chiu cha con ch khng ch mt chiu nh nh ngha phn trn. Lc , cu trc cy nh phn c th nh ngha li nh sau:
typedef struct tagTNode { DataType Key; struct tagTNode* pParent; struct tagTNode* pLeft; struct tagTNode* pRight; }TNODE; typedef TNODE *TREE;
33
Cy nh phn
Mt cch biu din cy nh phn khc
34
nh ngha: cy nh phn tm kim (BST) 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. Nu s nt trn cy l N th chi ph tm kim trung bnh ch khong log2N.
36
Cy nh phn tm kim
44
18
88
13
37
59
108
15
Cau truc D lieu - Cau truc cay
23
40
55
71
37
Cu trc d liu
typedef struct NODE { int data; NODE* left; NODE* right; }; typedef struct NODE* TREE; TREE root;
38
39
Thm mt nt vo cy BST
int { InsertTree(tree &root , int x) if(root != NULL) { if(root->data==x) return 0; if(root->data>x) return InsertTree(root->letf,x); else return InsertTree(root->right,x); } else
Cau truc D lieu - Cau truc cay 41
else { root= new node; if(root==NULL) return -1; root->data=x; root->left=root->right=NULL; return 1;
}
}
Cau truc D lieu - Cau truc cay 42
To 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. void CreateTree(tree &root) { int x,n; cout<<Nhap n = ; cin>>n; for(int i=1; i<=n;i++) { cout<<Nhap gia tri:; cin>>x; InsertTree(root,x); } } - Cau truc cay Cau truc D lieu
43
To cy nh phn tm kim
25 37 10 18 29 50 3 1 6
25
10 37
5 12
20
35 13 32 41
3
1 5
25 37 10 18 29 50
18
6 12 13
3 1 6
29
20 35 32
5 12 20
50
41
35
13
32
41
44
Thao tc duyt cy trn cy nh phn tm kim hon ton ging nh trn cy nh phn. Lu : 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.
45
46
47
48
NODE* searchNode(TREE root, int X) { if(root!=NULL) { if(root->data == X) return root; if(root->data > X) return searchNode(root->left, X); return searchNode(root->right, X); } return NULL; }
49
NODE * searchNode(TREE root, int x) { TNODE *p = root; while (p != NULL) { if(x == p->data) return p; else if(x < p->data) p = p->left; else p = p->right; } return NULL; }
50
10
3 1 5 6 12 13 18 20 29 35 32
37
50 41
Tm kim 13
Cau truc D lieu - Cau truc cay
Tm thy
10
3 1 5 6 12 13 18 20 29 35 32
37
50 41
Tm kim 13
Cau truc D lieu - Cau truc cay
Tm thy
Tm mt phn t x trong cy
Nhn xt:
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) .
53
Tm mt phn t x trong cy
Tm X=55 44 44 < X
18
88 > X
88
13
37
59 > X
59
108
15
23
40
55
71
54
Tm mt phn t x trong cy
55
Thm mt phn t x vo cy
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 ngoi 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:
56
Thm mt phn t x vo cy
int insertNode(TREE &root, Data X) { if (root) { if(root->data == X) return 0; // c if(root->data > X) return insertNode(root->left, X); else return insertNode(root->right, X); } root = new Node; if (root == NULL) return -1; // thiu b nh root->data = X; root->left = root->right = NULL; return 1; // thm vo thnh cng }
Cau truc D lieu - Cau truc cay 57
Thm mt phn t x vo cy
44 44 < X
Them X=50
18
88 > X
88
13
37
59 > X
59
108
15
23
40 55 > X 50
55
71
58
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 l nt l. X ch c 1 con (tri hoc phi). X c c 2 con
59
Hy mt phn t c kha x
Trng hp 1: X l nt l.
1. Xa node ny
Hy mt phn t c kha x
Trng hp 1: X l nt l.
18
88
13
37
59
108
23
40
55
71 61
Hy mt phn t c kha x
Trng hp 2: X ch c 1 con (tri hoc phi)
1. Gn lin kt t cha ca n u u
x v
62
Hy mt phn t c kha x
Trng hp 2: X ch c 1 con (tri hoc phi)
18
88
13
37
59
108
15
23
55
71
63
Hy mt phn t c kha x
Trng hp 3: X c 2 con
1. Tm w l node trc node x trn php duyt cy inorder (chnh l node cc phi ca cy con bn tri ca x) 2. Thay x bng w 3. Xa node w c (ging trng hp 1 hoc 2 xt)
Cau truc D lieu - Cau truc cay 64
Hy mt phn t c kha x
Trng hp 3: X c 2 con
Trng hp cui cng: Khng th hy trc tip do X c 2 con 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
Hy mt phn t c kha x
Trng hp 3: X c 2 con
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, ta s chn phn t phi nht trn cy con tri lm phn t th mng.
66
Hy mt phn t c kha x
Trng hp 3: X c 2 con
44
18
88
13
37
59
108
15
23
40
55
71
30
67
Hy mt phn t c kha x
Trng hp 3: X c 2 con
68
Hy mt phn t c kha x
int delNode(TREE &root, Data X) { if(root== NULL) return 0; if(root->data > X) return delNode(root->left, X); if(root->data < X) return delNode(root->right, X); //T->Key == X Node* p = root; if(root->left == NULL) root = root->right; else if(root->right == NULL) root = root->left; else // T c d 2 con searchStandFor(p, root->right); delete p; }
Cau truc D lieu - Cau truc cay 69
Hy mt phn t c kha x
void searchStandFor(TREE &p, TREE &q) { if(q->left) searchStandFor(p, q->left); else { p->data = q->data; p = q; q = q->right; } }
Cau truc D lieu - Cau truc cay 70
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 &root) { if(root) { removeTree(root->reft); removeTree(root->right); delete(root); } }
71
Cy nh phn tm kim
Nhn xt:
Tt
c cc thao tc searchNode, insertNode, delNode 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. Trong trng hp xu nht, cy c th b suy bin thnh 1 danh sch lin kt (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).
72