Upload
shannon-christian
View
46
Download
5
Embed Size (px)
DESCRIPTION
Chapter 5 Tree Part 2. WATTANAPONG SUTTAPAK Software Engineering, School of Information Communication Technology, University of PHAYAO. จุดประสงค์ บทเรียนที่ 5. มีความรู้ความเข้าใจเรื่องการ ท่องไบนารี่ท รีทั้ง 3 แบบ สามารถเขียนโปรแกรมเพิ่ม ลบ ค้นหา และ แสดงผลไบนารี่ท รีได้ - PowerPoint PPT Presentation
Citation preview
1
WATTANAPONG SUTTAPAKSOFTWARE ENGINEERING, SCHOOL OF INFORMATION
COMMUNICATION TECHNOLOGY,UNIVERSITY OF PHAYAO
Chapter 5Tree Part 2
2
จุ�ดประสงค์ บทเร�ยนท�� 5
มี�ค์วามีร� �ค์วามีเข้�าใจุเร��องการท�องไบนาร��ทร�ท��ง 3 แบบ สามีารถเข้�ยนโปรแกรมีเพิ่$�มี ลบ ค์�นหา และแสดงผลไบนาร��ทร�ได�มี�ค์วามีร� �ค์วามีเข้�าใจุในเร��องเอว�แอลทร�ได�มี�ค์วามีร� �ค์วามีเข้�าใจุในเร��องการปร�บโหนดข้องเอว�แอลทร� สามีารถเพิ่$�มี ลบ ค์�นหา และแสดงผลเอว�แอลทร�ได�
3
TREE TRAVERSAL
4
Tree Traversal
Tree traversal ชื่��อภาษาไทย การท�องโหนด แบ�งเป+น 3 ประเภทค์�อ
inorder preorder postorder
โดยแต่�ละประเภทมี�ล�กษณะด�งต่�อไปน��
5
Tree Traversal
inorder เป+นการเข้�าเข้�าถ.งโหนดแบบ ascending order น��น ค์�อเข้�าต่ามีล/าด�บจุากน�อยไปหามีาก หร�อต่ามีล/าด�บก�อนหล�ง(เชื่�น
ต่�วอ�กษรก�อนไปหล�ง)การเข้�าถ.งโหนดว$ธี�น��มี�ล/าด�บการเข้�าถ.งต่ามีล/าด�บค์วามี
ส/าค์�ญค์�อ1. โหนดซ้�าย2. โหนดพิ่�อแมี�3. โหนดข้วา
ประโยชื่นข้องการท�องโหนดแบบ inorder เชื่�น การ เร�ยงล/าด�บข้�อมี�ล การหาค์�ามีากส�ด น�อยส�ด ค์�ากลาง
เป+นต่�น
6
Tree Traversal
inorder step
1. start at root node ,set root to c-node2. check c-node has L-child?
2.1 Y : change L-child to c-node then go to 22.2 N : print c-node check c-node has R-child?
2.2.1 Y: set R-child to c-node then go to 2.2.2.2 N: return;
7
Tree Traversal
inorder Ex1
6
4 8
2 711
5
1 3
1 2 3 4 5 6 7 8 11
8
Tree Traversal
inorder Ex2
6
4 9
7
11
5
4 5 6 7 8 9 11
13
8
13
จุะเห3นว�า inorderเราจุะสามีารถต่อบได�ท�นท�น��นค์�อล/าด�บน�อยไปหามีากแต่�ในการใชื่�งานจุร$ง(coding) จุะไมี�เห3นต่�วเลข้ด�งน��นจุ.งต่�องใชื่�อ�ลกอร$ท.มีด�งท��กล�าวมีา
9
Tree Traversal
inorder Ex3 สมีมีต่$ s เป+น class student เก3บ id, name เร�ยงล/าด�บ id
s1
s2
s3
s6
s8
s5
s2 s5 s1 s6 s4 s3 s8 s7
s4
s7
กรณ�ข้�อมี�ลเป+นค์ลาส และมี�การล/าด�บ attribute
10
Tree Traversal
preorder เป+นการเข้�าถ.งโหนด โดยจุ�ดประสงค์ในการเข้�าถ.งย�งไมี�
แน�ชื่�ดแต่กต่�างจุาก inorder ท��มี�จุ�ดประสงค์ชื่�ดเจุนโดยการเข้�าถ.งโหนดว$ธี�น��มี�ล/าด�บการเข้�าถ.งต่ามีล/าด�บ
ค์วามีส/าค์�ญค์�อ1. โหนดพิ่�อแมี�2. โหนดซ้�าย3. โหนดข้วา
ต่�วอย�างการประย�กต่ใชื่� ได�แก� การแปลงเป+น prefix
11
Tree Traversal
preorder step
1. start at root node , set root to c-node2. print c-node3. check c-node has L-child?
3.1 Y : change L-child to c-node then go to 23.2 N : check c-node has R-child?
3.2.1 Y: set R-child to c-node then go to 2.3.2.2 N: return;
12
Tree Traversal
preorder Ex1
6
4 8
2 711
5
1 3
6 4 2 1 3 5 8 7 11
จุะส�งเกต่�เห3นว�าเมี��อน/าข้�อมี�ล ท��ได�จุาก preorder ไป
insert จุะได�ล�กษณะต่ามีtree
13
Tree Traversal
preorder Ex2((1+3)/4)*(7+1)
*
/ +
+ 7 14
1 3
* / + 1 3 4 + 7 1
14
Tree Traversal
postorder เป+นการเข้�าถ.งโหนด ท��จุ�ดประสงค์ไมี�ชื่�ดเจุนเชื่�น
ก�น( เหมี�อน preorder)โดยการเข้�าถ.งโหนดว$ธี�น��มี�ล/าด�บการเข้�าถ.งต่ามีล/าด�บ
ค์วามีส/าค์�ญค์�อ1. โหนดซ้�าย2. โหนดข้วา3. โหนดพิ่�อแมี�
ต่�วอย�างการประย�กต่ใชื่� ได�แก� การแปลงเป+น postfix
15
Tree Traversal
postorder step
1. start at root node , set root to c-node2. check c-node has L-child?
3.1 Y : change L-child to c-node then go to 23.2 N : check c-node has R-child?
3.2.1 Y: set R-child to c-node then go to 2.3.2.2 N: print L-child , return;
16
Tree Traversal
postorder Ex1
6
4 8
2 711
5
1 3
1 3 2 5 4 7 11
8 6
จุะส�งเกต่�เห3นว�าเมี��อน/าข้�อมี�ล ท��ได�จุาก postorder
(จุากหล�งไปหน�า) น/าไปinsert จุะได�ล�กษณะต่ามีtree
17
Tree Traversal
postorder Ex2((1+3)/4)*(7+1)
*
/ +
+ 7 14
1 3
1 3 + 4 / 7 1 + *
18
DELETION NODE
19
Deletion node
กระบวนการลบโหนด มี�ค์วามีซ้�บซ้�อนกว�าการเพิ่$�มี การอ�านและ การค์�นหา เน��องจุากเมี��อลบแล�ว ต่�องพิ่$จุารณาโหนดท��มีาแทนท�� โหนดท��ลบ
ข้��นต่อนการลบโหนด1. ถ�าโหนดท��ลบไมี�มี� leaf node ไมี�ต่�องหาโหนดมีาแทน2. ถ�าโหนดท��ลบมี�เพิ่�ยง 1 leaf node ให�น/า leaf node น��น
มีาแทนท��ได�เลย3. ถ�าโหนดท��ลบมี� 2 leaf node ให�แทนท��ด�วยโหนดด�านซ้�ายท��
มี�ค์�ามีากท��ส�ดหร�อโหนดด�านข้วาท��มี�ค์�าน�อยท��ส�ด
20
Deletion node
deletion node Ex1 ลบ โหนด 5
6
4 8
2 711
5
1 3
21
Deletion node
deletion node Ex2 ลบ โหนด 11
6
4 8
2 711
5
1 3 14
13
15
22
Deletion node
deletion node Ex2 ลบ โหนด 11
6
4 8
2 75
1 3
14
13
15
23
Deletion node
deletion node Ex3 ลบ โหนด 4
6
4 8
2 711
5
1 3
24
Deletion node
deletion node Ex3 ลบ โหนด 4 ว$ธี�ท�� 1
6
3 8
2 711
5
1
25
Deletion node
deletion node Ex3 ลบ โหนด 4 ว$ธี�ท�� 2
6
4 8
2 711
5
1 3
26
Deletion node
deletion node Ex3 ลบ โหนด 4 ว$ธี�ท�� 2
6
5 8
2 711
1 3
27
AVL TREE
28
AVL Tree
เป+น tree (Adel’son-Vel’ski and Landis) พิ่�ฒนาค์วามีสามีารถข้อง binary search tree(b-s-tree
) ร�ปแบบโหนดข้.�นก�บการล/าด�บการเพิ่$�มีข้�อมี�ล ท/าให�จุ/านวนโหนด
มี�โอกาสจุ�ดเร�ยงเป+น L-node ท��งหมีดหร�อ R-node ท��งหมีด ท/าให�การค์�นหาเก$ดเป+น worst case(O(n)) เชื่�น
6
5
3 6
5
3
29
AVL Tree
โดยต่�องมี�ค์�ณสมีบ�ต่$ด�งต่�อไปน�� เป+น binary search tree มี�เง��อนไข้สมีด�ล(balance) ข้อง tree น��นค์�อ P-node มี� level ข้อง L-
child และ R-child มี�ค์วามีแต่กต่�างไมี�เก$น 1
6
5 80 0
16
5 8
9
0
0
1
26
5
30
1
2
30
AVL Tree
44
17 62
1 50 7832
48
46 49
54
51 56
64 88
81 91
35
h = 1 h = 2 h = 3 h = 4
31
AVL Tree
6
5 8
3 9
6
4 8
3 95 7
6
4 8
3 9511
โหนด 8 ค์วามีส�งต่�างก�น0 ก�บ 2
32
AVL Tree
InsertionEx1 ต่�องการเพิ่$�มี 6 5 8 2 1 3
ท/าการเพิ่$�มีข้�อมี�ลเหมี�อน binary search tree
6
5 8
2
1
33
AVL Tree
6
5 8
2
1
1
สมีด�ลแต่�ผ$ดกฏข้อง balance search tree
ด�งน��นจุ.งต่�อง rebalance tree ด�วยว$ธี�การหมี�น
34
AVL Tree
Rotation เป+นการปร�บสมีด�ลข้อง AVL Tree แบ�งเป+น 2 ว$ธี�ค์�อ
1. หมี�นค์ร��งเด�ยว2. หมี�นสองค์ร��ง
35
ab
ca
bcsingle rotation
cb
a
ab
csingle rotation
36
AVL Tree
6
5 8
2
1
37
AVL Tree
6
5
8
2
1
38
AVL Tree
6
5
8
2
1
39
AVL Tree
6
5
82
1
40
ac
b
double rotation
ab
c
double rotation
bc
a
ab
c
ca
b
cb
a
41
4 rotations
42
T0
T1
T2 T3
T0 T1T2 T3
single rotationa
bc
ab
c
43
ab
c
T0 T1
T2
T3
ab
c
T0 T1T2 T3
single rotation
44
ab
c
T0 T1T2 T3
double rotationa
bc
T0 T1
T2
T3a
c
bT0
T3
T1T2
45
ab
c
T0 T1T2 T3
double rotation
ab
cT0
T1
T2 T3
ac
bT0
T3
T1T2
46
AVL Tree
Exercise- เพิ่$�มีโหนดใน AVL Tree ข้องค์�าต่�อไปน��
- 1 22 10 9 8 5 4 15 6 7 3- ลบโหนดต่�อไปน��จุาก AVL Tree ด�านบน
- 7 9 15
47
AVL Tree
1
1 22 10 9 8 5 4 15 6 7 3
10
22
double rotation
48
AVL Tree
1
1 22 10 9 8 5 4 15 6 7 3
10
22
9
8
double rotation
49
AVL Tree
8
1 22 10 9 8 5 4 15 6 7 3
10
22
91
5
ab
c
T0 T1
T2
T3
ab
c
T0 T1T2 T3
single rotation
50
AVL Tree
8
1 22 10 9 8 5 4 15 6 7 3
10
22
1
5 9
4
51
AVL Tree
1 22 10 9 8 5 4 15 6 7 3
810
22
4
5 91
52
AVL Tree
1 22 10 9 8 5 4 15 6 7 3
810
22
4
5 9115
6
7
53
AVL Tree
1 22 10 9 8 5 4 15 6 7 3
810
22
4
6 9115
753
54
AVL Tree
ลบโหนด 7 9 15
810
22
4
6 9115
753
Ex 2
55
AVL Tree
ลบโหนด 7 9 15
815
22
4
61 10
53
Ex 2
56
AVL Tree
ลบโหนด 7 9 15
810
22
4
61
53
Ex 2
57
AVL Tree
ลบโหนด 7 9 15
822
10
4
61
53
Ex 2
AVL Tree58
44
17 62
1 50 7818
48
46 49
54
51 56
64 88
81 91
2 3
11 122
Ex 3
19
1
4
AVL Tree59
44
17 62
1 50 7818
48
46 49
54
51 56
64 88
81 91T0
T1
T2
T3
1 3
11 122
Ex 3
AVL Tree60
44
62
78T0
T1
T2 T3
44
62
78
T0T1 T2 T3
reconstruction
AVL Tree61
44
17
62
1
50
78
18 48
46 49
54
51 56
64 88
81 91
T0
T1
T2
T3
T0 T1 T2 T3 ?
62
4 rotation types
63
4 rotation types
T0
T1
T2 T3
T0 T1T2 T3
single rotation
a=zb=y
c=xa=z
b=yc=x
a b c เร�ยงต่ามีล/าด�บซ้�ายไปข้วา หร�อ a<b<cx y z เร�ยงต่ามีล/าด�บบนลงล�าง
64
4 rotation types
T0 T1
T2
T3
T0 T1T2 T3
single rotationa=x
b=yc=z
c=z
b=y
a=x
a b c เร�ยงต่ามีล/าด�บซ้�ายไปข้วา หร�อ a<b<cx y z เร�ยงต่ามีล/าด�บบนลงล�าง
65
4 rotation types
T0 T1T2 T3
double rotation
T0
T3
T1T2
a=zc=y
b=x
a=z c=yb=x
a b c เร�ยงต่ามีล/าด�บซ้�ายไปข้วา หร�อ a<b<cx y z เร�ยงต่ามีล/าด�บบนลงล�าง
66
4 rotation types
T0 T1T2 T3
double rotation
T0
T3
T1T2
a=yc=z
b=x
b=xa=y c=z
a b c เร�ยงต่ามีล/าด�บซ้�ายไปข้วา หร�อ a<b<cx y z เร�ยงต่ามีล/าด�บบนลงล�าง
67
อ�ลกอร$ท.มีการเพิ่$�มี ลบ โหนด เพิ่��อปร�บโค์รงสร�าง1. set add or delete node to c-node2. c-node is root then exit 3. c-node is balance ?
3.1 c-node is balance3.1.1 set parent node of c-node to c-node 3.1.2 go to 2
3.2 c-node is not balance3.2.1 set c-node to z node3.2.2 set y to longest node : child L or R of z node (equal set
R)3.2.3 set x to longest node : child L or R of y node (equal set
R)3.2.4 check 4 reconstruction similar with a,b,c and x,y,z
AVL Tree68
44
17 62
1 50 7818
48
46 49
54
51 56
64 88
81 91T0
T1
T2
T3
1 3
11 122
zy
x
AVL Tree69
44
17
62
1
50
78
18 48
46 49
54
51 56
64 88
81 91
T0
T1
T2
T3
z
y
x
70
Another Tree
splay tree2-4 tree or 2-3-4 treeRed Black tree