โครงสร้างขอมู้ลทรี...
TRANSCRIPT
โครงสรางขอมลทร
(TREE)
1
วตถประสงค
เพอใหนกศกษาบอกนยามและยกตวอยางโครงสรางขอมลแบบทร
เพอใหนกศกษาจาแนกประเภทของทร
เพอใหนกศกษาอธบายการแทนททรในความจาหลกและการ
แปลงทรทวไปใหเปนไบนารทร
2
3
TREE
นยาม
General Tree
Binary Tree
(Incomplete,Complete)
การแทนททรในหนวยความจาหลก
General Tree Traverse
(Level by level,
Prefix walk,Postfix walk)
การแปลง General Tree เปนBinary Tree
การแปลง Forest เปน Binary Tree
Binary Search Tree (BST)
Binary Tree Traverse
(Preorder :NLR
Inorder :LNR
Postorder :LRN)
4
นยาม : ทร (tree)
เปนโครงสรางขอมลทความสมพนธระหวางโหนดจะม
ความสมพนธลดหลนกนเปนลาดบชน (hierarchical
relationship) มกชนกไดแลวแตงาน ไดมการนารปแบบทรไป
ประยกตใชในงานตาง ๆ อยางแพรหลาย สวนมากจะใชสาหรบ
แสดงความสมพนธระหวางขอมล
เปนโครงสรางขอมลแบบไมเปนเชงเสน (nonlinear data
structure)
5
ตวอยางโครงสรางขอมลแบบทรซงแทนการจดสารบญหนงสอ
6
ศพท : ทร (tree)
โหนดในทรจะมความสมพนธกบโหนดในระดบทตาลงมาหนง
ระดบไดหลาย ๆ โหนดหรออาจกลาวไดวาแตละโหนดของทรเปน โหนด
แม (parent or mother node) ของโหนดลก (child or son node) ซงเปน
โหนดทอยในระดบตาลงมาหนงระดบโดยสามารถมโหนดลกไดหลาย ๆ
โหนด และโหนดตางๆ ทมโหนดแมเปนโหนดเดยวกนเรยกวา โหนดพ
นอง (siblings) ทกๆ โหนดตองมโหนดแมเสมอยกเวนโหนดในระดบ
สงสดไมมโหนดแมเรยกโหนดนวา โหนดราก (root node) โหนดทไมม
โหนดลกเลยเรยกวา โหนดใบ (leave node) และเสนเชอมแสดง
ความสมพนธระหวางโหนดสองโหนดเรยกวา กง (branch)
7
Node หมายถง ขอมล 1 ขอมลทจดเกบใน tree
8
9
10
11
12
13Parent Node หมายถง node ทเปนพอ หรอ node ทม node ตอไปอก
14
15
16
17Ancestor Node หรอ Node ทมากอนทนท
18
19
20Descendant Node คอ โหนดลกของโหนด x และโหนดททกโหนดทแตกจากโหนดลกของโหนด x
21Descendant Node คอ โหนดลกของโหนด x และโหนดททกโหนดทแตกจากโหนดลกของโหนด x
22
23
24
แบบฝกหด 1
Root Node คอโหนดใด
Child Node ของ Node A คอโหนดใด
Leaf Node คอโหนดใด
Parent Node ของโหนด D คอโหนดใด
Descendant Node ของโหนด E คอโหนดใด
Ancestor Node ของโหนด E คอโหนดใด
Non-Leaf คอโหนดใด
Siblings ของโหนด H คอโหนดใด
โครงสรางขอมลแบบตนไมขางตนมจานวน Level กระดบ
25
แบบฝกหด 2
26
Root Node คอโหนดใด
Child Node ของ Node D คอโหนดใด
Leaf Node คอโหนดใด
Parent Node ของโหนด J คอโหนดใด
Descendant Node ของโหนด H คอโหนดใด
Ancestor Node ของโหนด J คอโหนดใด
Non-Leaf คอโหนดใด
Siblings ของโหนด B คอโหนดใด
โครงสรางขอมลแบบตนไมขางตนมจานวน Level กระดบ
27
นยามทเกยวของกบทร
ฟอรเรสต (forest) หมายถงกลมของทรทเกดจากการเอาโหนด
ราก ของทรออก หรอเซตของทรทแยกจากกน (disjoint trees)
เชน ทรในรป ถาตดเอาโหนดราก “R” และตดเสนทางจาก
โหนด “R” ไปยง โหนด “A” โหนด “B” และโหนด “C”
ออกไปจากทร ไดสามทรยอยทแยกจากกนเรยกทงหมดวา
ฟอรเรสต
28
นยามทเกยวของกบทร
29
นยามทเกยวของกบทร
ทรทมแบบแผน (ordered tree)
หมายถงทรทโหนดตาง ๆ ในทรนนม
ความสมพนธทแนนอน เชน ไป
ทางขวา ไปทางซาย เปนตน
ทรในรป (ก) และทรในรป (ข)
ถากาหนดความสมพนธระหวางโหนด
ไวถอวาทรทงสองเปนทรทตางกน
เนองจากทรในรป (ก) โหนด “C” เปน
โหนดทางขวา ในขณะท ทรในรป (ข)
โหนด “C” เปนโหนดทางซาย
ทาใหทรทงสองไมเหมอนกน และถา
ไมได กาหนดความสมพนธระหวาง
โหนดไวถอวาทรทงสองเปนทรท
เหมอนกน เพราะมจานวนโหนดและ
จานวนทรยอยเทากน
30
นยามทเกยวของกบทร
ทรคลาย (similar tree) คอ ทรทมโครงสรางเหมอนกน
หรอทรทมรปรางของทรเหมอนกนนนเอง โดยไม
คานงถงขอมลทอยในแตละโหนด
31
ทรคลาย (similar tree)
ตวอยาง ทรในรป (ก) และ (ข) เปนทรทคลายกนแตไม
เหมอนกน เนองจากมโครงสรางทรเหมอนกนแตขอมลในโหนด
ตาง ๆ ทตาแหนงเดยวกนไมเหมอนกน
32
นยามทเกยวของกบทร
ทรเหมอน(equivalent tree) หมายถงทรทเหมอนกนโดย
สมบรณ (equivalence)โดยตองเปนทรทคลายกนและแต
ละโหนดในตาแหนงเดยวกนมขอมลเหมอนกน
33
ทรเหมอน(equivalent tree)
ตวอยางทรในรป (ก) และ (ข) ทรทงสองเปนทรทเหมอนกน
เนองจากมโครงสรางทรทเหมอนกน และในแตละโหนดท
ตาแหนงเดยวกนมขอมลเหมอนกน
34
นยามทเกยวของกบทรกาลง (degree) หมายถง จานวนทรยอยของ
โหนดนน ๆ
ตวอยางทรในรป โหนด “B” มคากาลงเปน
1 เพราะมทรยอยคอ {“D”}
สวนโหนด “C” มคากาลงเปน 2 เพราะมท
รยอย {“E”, “G”, “H”, “I”} และ {“F”}
จะเหนวา
โหนดใบเปนโหนดทไมมทรยอยเลย
ดงนนโหนดใบทกโหนดมคากาลงเปนศนย
35
ประเภทของทร
1. ทรแบบทวไป (general tree)
หมายถงทรททกๆ โหนดบนทร
สามารถมโหนดลกไดไมจากด
36
ประเภทของทร
2. ไบนารทร (binary tree)
หมายถงทรททกๆ โหนดบนท
รสามารถมโหนดลกไดไมเกน
สองโหนด
37
ไบนารทรแบบไมสมบรณ incomplete binary tree
38
ไบนารทรแบบสมบรณ
ไบนารทรททก ๆ โหนดมทรยอยทางซายเทากบทรยอยทางขวา และ
โหนดใบทกโหนดจะตองอยทระดบเดยวกนเรยกวา ไบนารทรแบบ
สมบรณ (complete binary tree)
39
ไบนารทรแบบสมบรณ
จานวนโหนดทงหมดในทรสมบรณทม L ระดบสามารถคานวณไดจากสตรดงน N = 2L – 1
ดงนนทรในรปเมอใชสตรคานวณหาจานวนโหนดในทรจะไดดงน
Max level = 1 n = 21-1 = 1
Max level = 2 n = 22-1 = 3
Max level = 3 n = 23-1 = 7
40
การแทนททรในความจาหลก
การแทนทโครงสรางขอมลแบบทรในความจาหลกสามารถ
แทนทแบบสแตตก หรอแบบไดนามกกได โดยมการเชอมโยงจาก
โหนดแมไปยงโหนดลก แตละโหนดตองมลงคฟลดหลายลงคฟลด
เพอเกบทอยของโหนดลกตาง ๆ นนคอ จานวนลงคฟลดของแตละ
โหนดขนอยกบจานวนของโหนดลก การแทนททรซงแตละโหนด
มจานวนลงคฟลดไมเทากน ทาใหยากตอการปฏบตการเปนอยาง
ยง
41
1.ใหแตละโหนดเกบพอยนเตอรชไปยงโหนดลกทกโหนด
วธน จะใหจานวนฟลดในแตละโหนดเทากน โดยกาหนดจานวนลงค
ฟลดทกโหนดมขนาดเทากบจานวนโหนดลกของโหนดทมลกมาก
ทสด โหนดใดไมมโหนดลกกใหคาพอยนเตอรในลงคฟลดนนๆ ม
คาเปนนล โดยใหลงคฟลดแรกเกบคาพอยนเตอรชไปยงโหนดลก
ลาดบทหนง ลงคฟลดทสองเกบคาพอยนเตอรชไปยงโหนดลกใน
ลาดบทสอง และลงคฟลดอนเกบคาพอยนเตอรของโหนดลกในลาดบ
ถดไปเรอย ๆ
การแทนททรในความจาหลก
42
ใหแตละโหนดเกบพอยนเตอรชไปยงโหนดลกทกโหนด
การแทนททรในความจาหลก
43
ใหแตละโหนดเกบพอยนเตอรชไปยงโหนดลกทกโหนด
การแทนทรดวยโหนดขนาดเทากนจะ ใชเนอทจานวนมาก เนองจาก
แตละโหนดมจานวนโหนดลกไมเทากนหรอบางโหนดไมมโหนดลกเลย
ถาเปนทรทแตละโหนดมจานวนโหนดลกทแตกตางกนมาก เชน
ทรทมบางโหนดมจานวนโหนดลกสงสดเปน 15 โหนด ในขณะทโหนด
สวนใหญมจานวนโหนดลกแค 1 ถง 2 โหนดเทานน เราจะตองกาหนดให
แตละโหนดมลงคฟลดทงหมดเปน 15 ลงคฟลด ทง ๆ ทลงคฟลดสวนใหญ
มคาเปนนล ทาใหลงคฟลดบางลงคฟลดไมไดใชประโยชนเลย เปนการ
สนเปลองเนอทในหนวยความจาโดยเปลาประโยชน
การแทนททรในความจาหลก
44
2. แทนทรดวยไบนารทร
วธแกปญหาเพอลดการสนเปลองเนอทในหนวยความจากคอ
กาหนดลงคฟลดใหมจานวนนอยทสดเทาทจาเปนเทานน ถา
กาหนดใหแตละโหนดมจานวนลงคฟลดสองลงคฟลด โดยใหลงค
ฟลดแรกเกบทอยของโหนดลกคนโต และลงคฟลดทสองเกบท
อยของโหนดพนองทเปนโหนดถดไป โหนดใดไมมโหนดลก
หรอไมมโหนดพนองใหคาพอยนเตอรในลงคฟลดมคาเปนนล
การแทนททรในความจาหลก
45
2. แทนทรดวยไบนารทร
การแทนททรในความจาหลก
46
2. แทนทรดวยไบนารทร
จากรปจะไดโครงสรางทรทแตละโหนดมลงคฟลดแคสองลงคฟลด
ซงชวยใหประหยดเนอทในการจดเกบไดมาก เรยกโครงสรางทรท
แตละโหนดมจานวนโหนดลกไมเกนสองหรอแตละโหนดม
จานวนทรยอยไมเกนสองนวา ไบนารทร (binary tree) โดยเราอาจ
กลาวไดวาการแทนทไบนารทรในหนวยความจา แตละโหนด
ประกอบดวยลงคฟลดสองลงคฟลด ลงคฟลดแรกเกบทอยของ
โหนดลกทางซาย และลงคฟลดทสองเกบทอยของโหนดลกทางขวา
การแทนททรในความจาหลก
47
General Tree Traversal
Level-by-level
Top-down-walk
Bottom-up-walk
Prefix walk
Postfix walk
48
Level-by-level
Top-down-walk A B C D E F G H I J K L M N P Q R T
Walk : Left Right and Top Down
49
Level-by-level
Bottom-up-walk R T K L M N P Q F G H I J B C D E A
Walk : Left Right and Down Top
50
Prefix Walk
ใช root node ของแตละ Subtree เปนหลก
A B F K G C H L M N D I J P R Q T E
51
Postfix Walk
เยยม node ลกใหหมดกอน
K F G B L M N H C I R P T Q J D E A
52
การแปลงทรทวไปใหเปนไบนารทร
การแทนททรในความจาหลก
การแปลงทรทว ๆ ไปใหเปนไบนารทร ทความสมพนธของการจดเกบแต
ละโหนดม 2 ลงคฟลด คาพอยนเตอรในลงคฟลดแรกเกบทอยของโหนด
ลกคนโต และคาพอยนเตอรในลงคฟลดทสองเกบทอยของโหนดพนอง
คนถดไป มลาดบขนตอนการแปลงดงตอไปน
(1) ใหโหนดแมชไปยงโหนดลกคนโต แลวลบความสมพนธระหวาง
โหนดแมและโหนดลกอน ๆ
(2) ใหเชอมความสมพนธระหวางโหนดพนอง
(3) จบใหทรยอยทางขวาเอยงลงมา 45 องศา
53
การแปลงทรทวไปใหเปนไบนารทร
(1) ใหโหนดแมชไปยงโหนดลกคนโต แลวลบความสมพนธระหวางโหนดแมและโหนดลกอน ๆ
(1)
54
การแปลงทรทวไปใหเปนไบนารทร
(2) ใหเชอมความสมพนธระหวางโหนดพนอง
(1) (2)
55
การแปลงทรทวไปใหเปนไบนารทร
(3) จบใหทรยอยทางขวาเอยงลงมา 45 องศา
(2)
(3)
56
เมอทาการแปลงทรทวไปใหเปนไบนารทร
(3)
57
แบบฝกหด
จงแปลง Tree ใหเปน Binary Tree
1
2
6 10
7
3 4 5
8
A
C
G
B
ED F
J K L M
(1) (2)
การแปลง Forest เปน Binary Tree
การแปลง Forest ไปเปน binary tree
- ทาแบบเดยวกนกบ การแปลง tree ไปเปน binary tree
58
59
ขนตอนการแปลง Forest เปน Binary Tree
(1) ใหโหนดแมชไปยงโหนดลกคนโต แลวลบความสมพนธระหวางโหนดแมและโหนดลกอน ๆ
60
(2) ใหเชอมความสมพนธระหวางโหนดพนอง
61
(3) จบใหทรยอยทางขวาเอยงลงมา 45 องศา
แบบฝกหด 1 การแปลง Forest เปน Binary Tree
62
R
TS
U V WX
Y Z
แบบฝกหด 2 การแปลง Forest เปน Binary Tree
63