Professional Documents
Culture Documents
Structure of Tree
Structure of Tree
Ni dung
Gii thiu khi nim cu trc cy. Cu trc d liu cy nh phn, cy nh phn tm kim Gii thiu cu trc d liu cy nh phn tm kim cn bng.
03/02/2014
Cy?
nh ngha 1: 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
03/02/2014 Nhp mn CTDL v thut ton 3
Cy?
nh ngha 2: Cy l tp hp cc phn t c t chc : Hoc l tp rng(cy rng) Hoc tp khc rng trong c mt nt gc, cc nt cn li c phn thnh nhm, trong mi nhm l mt cy (cy con)
03/02/2014
V d
S t chc ca mt cng ty
Cng ty A
R&D
Kinh doanh
Tai vu
San xuat
Noi a
Quoc te
TV
CD
Amplier
Chau au
03/02/2014
My
Nhp mn CTDL v thut ton
Cac nc
5
Cy th mc
C:\
Program Files
My Music
Desktop
Favorites
Start Menu
Adobe
Microsoft Office
03/02/2014
03/02/2014
03/02/2014
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 nphn. Nt gc : l nt khng c nt cha. Nt l : l nt c bc bng 0 . Nt trong : l nt c bc khc 0 v khng phi l gc .
03/02/2014 Nhp mn CTDL v thut ton 9
V d
ROOT NODE
Manager Brad Owner Jake
Chef Carol
Waitress Joyce
Waiter Chris
Cook Max
Helper Len
03/02/2014
10
V d : Nt L
Owner Jake
Manager Brad
Chef Carol
Waitress Joyce
Waiter Chris
Cook Max
Helper Len
NODE l
Nhp mn CTDL v thut ton
03/02/2014
11
V d
Tree nodes
Tree edges
03/02/2014 Nhp mn CTDL v thut ton 12
V d
Gc(root) Nt trong
cha v con
03/02/2014
13
Mt s khi nim c bn
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.
03/02/2014
14
Chef Carol
Waitress Joyce
Waiter Chris
Cook Max
Helper Len
03/02/2014
15
Level One
Owner Jake
LEVEL 1
Manager Brad
Chef Carol
Waitress Joyce
Waiter Chris
Cook Max
Helper Len
03/02/2014
16
Level Two
Owner Jake
Manager Brad
Chef Carol
LEVEL 2
Waitress Joyce Waiter Chris Cook Max Helper Len
03/02/2014
17
nh ngha
Node 0 l t tin ca tt c cc node Nodes 1-6 l con chu ca node 0
Gc
Node 0
Node 2
Node 3
Node 5
Nhp mn CTDL v thut ton
Node 6
Node 4, 5 l anh
em
18
Mt s khi nim c bn
di ng i t gc n nt x: Px = s nhnh cn i qua k t gc n x di ng i tng ca cy : PT PX
XT
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.
03/02/2014 Nhp mn CTDL v thut ton 19
Nhn xt
Trong cu trc cy khng tn ti chu trnh T chc ca cu trc cy cho php truy cp nhanh n cc phn t ca n.
03/02/2014
20
Depth-first Search
03/02/2014
21
Breadth-first Search
03/02/2014
22
Cy nh phn
nh ngha: Cy nh phn l cy m mi nt c ti a 2 cy con
03/02/2014
23
Cy nh phn
Cay con trai Cay con phai
Cy nh phn
Hoc l cy rng Hoc l gm
1 node gc v mt con tri, mt cy con phi
03/02/2014
25
Cy nh phn
Cy nh phn dng biu din mt biu thc ton hc:
03/02/2014
26
A Subtree
Owner Jake
Manager Brad
Chef Carol
Waitress Joyce
Waiter Chris
Cook Max
Helper Len
Another Subtree
Owner Jake
Manager Brad
Chef Carol
Waitress Joyce
Waiter Chris
Cook Max
Helper Len
03/02/2014
29
Cy nh phn y
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8
k=3
03/02/2014
2k+1, 2k+2
30
03/02/2014
31
03/02/2014
32
Binary tree
a
d g h
e i
03/02/2014
33
Duyt cy nh phn
C 3 kiu duyt chnh c th p dng trn cy nh phn:
Duyt theo th t trc (NLR) Duyt theo th t gia (LNR) Duyt theo th t sau (LRN).
03/02/2014
34
H
N
J
O
K
P
Kt qu: A B D H I N E J O K C F L P G M
03/02/2014 Nhp mn CTDL v thut ton 36
void LNR(TREE Root) { if (Root != NULL) { LNR(Root->pLeft); <X ly Root>; //X ly tng ng theo nhu cau LNR(Root->pRight); } }
03/02/2014
37
H
N
J
O
K
P
Kt qu: H D N I B J O E K A F P L C M G
03/02/2014 Nhp mn CTDL v thut ton 38
H
N
J
O
K
P
Kt qu: H N I D O J K E B P L F M G C A
03/02/2014 Nhp mn CTDL v thut ton 40
03/02/2014
41
(3 + 1)3/(9 5 + 2) (3(7 4) + 6) = 13
03/02/2014 Nhp mn CTDL v thut ton 42
03/02/2014
43
03/02/2014
44
M s thao tc trn cy
m s node m s node l Tnh chiu cao
03/02/2014
45
m s node
03/02/2014
46
m s node
S node (EmptyTree) = 0 S node (Tree) = 1 + S node (Tree.Left) + S node (Tree.Right)
03/02/2014
47
m s node l
03/02/2014
48
m s node l
S nt l (EmptyTree) = 0
S nt l(RootOnly) = 1
S nt l(Tree) = S nt l (Tree.Left) + S nt l (Tree.Right)
03/02/2014
49
03/02/2014
50
Depth(EmptyTree) = -1
03/02/2014
51
Cy nh phn tm kim
03/02/2014
52
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. Nu s nt trn cy l N th chi ph tm kim trung bnh ch khong log2N.
03/02/2014
53
V d
44
18
88
13
37
59
108
15
23
40
55
71
03/02/2014
54
03/02/2014
55
03/02/2014
56
34 0
41 56 63 1 2 3
72 4
89 5
95 6
03/02/2014
57
34 0
41 56 63 1 2 3
72 4
89 5
95 6
34 0
41 1
56 2
72 4
89 5
95 6
03/02/2014
58
34 0
41 56 63 1 2 3
72 4
89 5
95 6
34 0
41 1
56 2
72 4
89 5
95 6
34 0
03/02/2014
56 2
72 4
95 6
59
41
89
34
56
72
95
03/02/2014
60
03/02/2014
61
V d BST
25
10
3 1 5 6 12 13 18 20 29 35 32
37
50 41
Duyt inorder: 1 3 5 6 10 12 13 18 20 25 29 32 35 37 41 50
03/02/2014 Nhp mn CTDL v thut ton 62
V d BST
25
10
3 1 5 6 12 13 18 20 29 35 32
37
50 41
Duyt postorder:
03/02/2014 Nhp mn CTDL v thut ton 63
V d BST
25
10
3 1 5 6 12 13 18 20 29 35 32
37
50 41
Duyt preorder:
03/02/2014 Nhp mn CTDL v thut ton 64
10
3 1 5 6 12 13 18 20 29 35 32
37
50 41
Tm kim 13
03/02/2014
Tm thy
10
3 1 5 6 12 13 18 20 29 35 32
37
50 41
Tm kim 14
03/02/2014
Khng tm thy
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); return searchNode(T->pRight, X); } return NULL; }
03/02/2014
67
Tm mt phn t x trong cy
TNODE * { TNODE while { if(x else searchNode(TREE Root, Data x)
*p = Root; (p != NULL)
== p->Key) return p;
03/02/2014
68
Tm mt phn t x trong cy
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) .
03/02/2014
69
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.
03/02/2014
70
Thm mt phn t x vo cy
Hm insert tr v gi tr 1 khi khng b nh 0 khi gp nt c 1 khi thnh cng
03/02/2014
71
Thm mt phn t x vo cy
int insertNode(TREE &T, Data X) { if (T) { if(T->Key == X) return 0; // a co if(T->Key > X) return insertNode(T->pLeft, X); else return insertNode(T->pRight, X); } T = new TNode; if (T == NULL) return -1; // thieu bo nh T->Key = X; T->pLeft = T->pRight = NULL; return 1; // them vao thanh cong }
03/02/2014 Nhp mn CTDL v thut ton 72
V d 4, 6, 1, 2, 5, 7, 3
4
1 2 3
03/02/2014 Nhp mn CTDL v thut ton 73
6 5
7
30 12 17 22
49
65 51 50
Nhp mn CTDL v thut ton
70 68
74
03/02/2014
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
03/02/2014
75
Trng hp 1: X l nt l.
ch n gin hy X v n khng mc ni n phn t no khc
T/h 1: huy X=40 44
18
88
13
37
59
108
15
23
40
55
71
03/02/2014
76
18
88
13
37
59
108
15
23
55
71
03/02/2014
77
Trng hp 3: X c 2 con
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.
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 tri nht trn cy con phi. Phn t 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 tri nht trn cy con phi lm phn t th mng.
03/02/2014 Nhp mn CTDL v thut ton 79
Trng hp 3: X c 2 con
Khi hy phn t X=18 ra khi cy, phn t 23 l phn t th mng:
T/h 3: huy X=18 44
18
88
13
23
37
59
108
15
23
40
55
71
03/02/2014
30
80
Trng hp 3: X c 2 con
Hm delNode tr v gi tr 1, 0 khi hy thnh cng hoc khng c X trong cy: int delNode(TREE &T, Data X) Hm searchStandFor tm phn t th mng cho nt p void searchStandFor(TREE &p, TREE &q)
03/02/2014
81
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); //T->Key == X TNode* p = T; if(T->pLeft == NULL) T = T->pRight; else if(T->pRight == NULL) T = T->pLeft; else // T c 2 con searchStandFor(p, T->pRight); delete p; }
03/02/2014 Nhp mn CTDL v thut ton 82
void searchStandFor(TREE &p, TREE &q) { if(q->pLeft) searchStandFor(p, q->pLeft); else { p->Key = q->Key; p = q; q = q->pRight; } }
03/02/2014
83
Remove
Remove 51
03/02/2014
84
Remove
Remove 83
03/02/2014
85
Remove
Remove 36
03/02/2014
86
V d
Remove root 2 ln
03/02/2014
87
V d
remove 15
03/02/2014
88
V d
42 l th mng
03/02/2014
89
V d
03/02/2014
90
V d
Kt qu xo ln 1
03/02/2014
91
V d
remove 42
03/02/2014
92
V d
03/02/2014
93
V d
03/02/2014
94
V d
removed 15, sau 42 c
03/02/2014
95
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).
03/02/2014
97
1,2,3,4,5 1 2 3 4 5
03/02/2014 Nhp mn CTDL v thut ton 98
03/02/2014
99
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.
03/02/2014
100
Cy AVL
44
23
88
13
37
59
108
15
03/02/2014
30
40
55
71
101
Cy AVL
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). T cy AVL, ngi ta pht trin thm nhiu loi CTDL hu dng khc nh cy en (Red-Black Tree), B-Tree,
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)
03/02/2014
103
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
03/02/2014
104
nh ngha
#define LH #define EH #define RH -1 0 1
/* Cay con trai cao hn */ /* Hai cay con bang nhau */ /* Cay con phai cao hn */
typedef struct tagAVLNode { char balFactor; // Ch so can bang Data key; struct tagAVLNode* pLeft; struct tagAVLNode* pRight; }AVLNode; typedef AVLNode *AVLTree;
03/02/2014
105
Trng hp thm hay hy mt phn t trn cy c th lm cy tng hay gim chiu cao, khi phi cn bng li cy. Vic cn bng li mt cy s phi thc hin sao cho ch nh hng ti thiu n cy nhm gim thiu chi ph cn bng. Cc thao tc c trng ca cy AVL:
Thm mt phn t vo cy AVL. Hy mt phn t trn cy AVL. Cn bng li mt cy va b mt cn bng.
03/02/2014 Nhp mn CTDL v thut ton 106
Cc trng hp mt cn bng
Ta s khng kho st tnh cn bng ca 1 cy nh phn bt k m ch quan tm n cc kh nng mt cn bng xy ra khi thm hoc hy mt nt trn cy AVL Nh vy, khi mt cn bng, lch chiu cao gia 2 cy con s l 2 C 6 kh nng sau:
Trng hp 1 - Cy T lch v bn tri : 3 kh nng Trng hp 2 - Cy T lch v bn phi: 3 kh nng
03/02/2014
107
T1 R
h-1
L1
R1
h-1
03/02/2014
108
h-1
L h-1
T1
h-1
R L h
T1
L1
R1
h
T
L1
R1
h-1
h-1
L h
T1
L1
R1
03/02/2014
109
Cc trng hp mt cn bng
Cc trng hp lch v bn phi hon ton i xng vi cc trng hp lch v bn tri. V vy, ch cn kho st trng hp lch v bn tri. Trong 3 trng hp lch v bn tri, trng hp T1 lch phi l phc tp nht. Cc trng hp cn li gii quyt rt n gin.
03/02/2014 Nhp mn CTDL v thut ton 110
Cn bng li cy AVL
T/h 1.1: cy T1 lch v bn tri. Ta thc hin php quay n Left-Left
T T1
T1 R
h-1
L1
h-1 R1 R h-1
L1
R1
h-1
03/02/2014
111
T1 R
h-1
T L1 h R1 R
L1
R1
h-1
03/02/2014
112
T/h 1.3: cy T1 lch v bn phi. Ta thc hin php quay kp Left-Right Do T1 lch v bn phi ta khng th p dng php quay n p dng trong 2 trng hp trn v khi cy T s chuyn t trng thi mt cn bng do lch tri thnh mt cn bng do lch phi ? cn p dng cch khc.
03/02/2014
113
T L T1 R R1 h T1
h-1 h-1
R L1 L2 T2 T2
h-1
h-1
L1
R1
R2
T1
h-1
03/02/2014
L1
L2
R2
h-1
114
Lu :
Trc khi cn bng cy T c chiu cao h+2 trong c 3 trng hp 1.1, 1.2 v 1.3. Sau khi cn bng,
Trng hp 1.1 v 1.3 cy c chiu cao h+1 Trng hp 1.2 cy vn c chiu cao h+2. y l trng hp duy nht sau khi cn bng nt T c c ch s cn bng 0. Thao tc cn bng li trong tt c cc trng hp u c phc tp O(1).
03/02/2014
115
Cn bng li cy AVL
T/h 1.1: cy T1 lch v bn tri. Ta thc hin php quay n Left-Left
T T1
T1 R
h-1
L1
h-1 R1 R h-1
L1
R1
h-1
03/02/2014
116
Quay n Left-Left
void rotateLL(AVLTree &T) //quay n Left-Left { AVLNode* T1 = T->pLeft; T->pLeft = T1->pRight; T1->pRight = T; switch(T1->balFactor) { case LH: T->balFactor = EH; T1->balFactor = EH; break; case EH: T->balFactor = LH; T1->balFactor = RH; break; } T = T1; }
03/02/2014
117
Quay n Right-Right
void rotateRR(AVLTree &T)//quay n Right-Right { AVLNode* T1 = T->pRight; T->pRight = T1->pLeft; T1->pLeft = T; switch(T1->balFactor) { case RH: T->balFactor = EH; T1->balFactor= EH; break; case EH: T->balFactor = RH; T1->balFactor= LH; break; } T = T1; }
03/02/2014
118
119
kp Right-Left
T1->balFactor = RH;
120
{ AVLNode* T1 = T->pLeft;
switch(T1->balFactor) case LH: rotateLL(T); return case EH: rotateLL(T); return case RH: rotateLR(T); return } return 0;
}
03/02/2014 Nhp mn CTDL v thut ton
{ 2; 1; 2;
121
{
AVLNode* T1 = T->pRight; switch(T1->balFactor) case LH: rotateRL(T); return case EH: rotateRR(T); return case RH: rotateRR(T); return } return 0; }
03/02/2014 Nhp mn CTDL v thut ton 122
{ 2; 1; 2;
03/02/2014
123
03/02/2014
127
if(T->key < X) { res = delNode (T->pRight, X); if(res < 2) return res; switch(T->balFactor) { case RH: T->balFactor = EH; return 2; case EH: T->balFactor = LH; return 1; case LH: return balanceLeft(T); } } // if(T->key < X) delNode3
03/02/2014 Nhp mn CTDL v thut ton 129 ....................................................
03/02/2014
131
Cy AVL
Nhn xt: Thao tc thm mt nt c phc tp O(1). Thao tc hy mt nt c phc tp O(h). Vi cy cn bng trung bnh 2 ln thm vo cy th cn mt ln cn bng li; 5 ln hy th cn mt ln cn bng li.
03/02/2014
132
Cy AVL
Nhn xt:
Vic hu 1 nt c th phi cn bng dy chuyn cc nt t gc cho n phn t b hu trong khi thm vo ch cn 1 ln cn bng cc b. di ng tm kim trung bnh trong cy cn bng gn bng cy cn bng hon ton log2n, nhng vic cn bng li n gin hn nhiu. Mt cy cn bng khng bao gi cao hn 45% cy cn bng hon ton tng ng d s nt trn cy l bao nhiu.
03/02/2014 Nhp mn CTDL v thut ton 133