Upload
jenski
View
64
Download
3
Embed Size (px)
DESCRIPTION
โครงสร้างข้อมูลแบบต้นไม้ (Tree). Tree. หมายถึง โครงสร้างข้อมูลที่ออกแบบมาให้มีลักษณะไม่เป็นเชิงเส้น มีการจัดเก็บข้อมูลเชื่อมโยงกันเป็นระดับชั้น โดยเริ่มจากโหนดแรกที่อยู่บนสุดเรียกว่า Root Node เชื่อมโยงไปยังโหนดระดับรองลงไป แต่ละระดับก็มีการเชื่อมโยงโหนดระดับต่อไป ซึ่งเรียกว่า Subtree. - PowerPoint PPT Presentation
Citation preview
โครงสรางขอมลแบบตนไมโครงสรางขอมลแบบตนไม(TREE)(TREE)
Tree• หมายถง โครงสรางขอมลทออกแบบมาใหมลกษณะไมเปนเชงเสน มการจดเกบขอมลเชอมโยงกนเปนระดบชน โดยเรมจากโหนดแรกทอยบนสดเรยกวา Root Node เชอมโยงไปยงโหนดระดบรองลงไป แตละระดบกมการเชอมโยงโหนดระดบตอไป ซงเรยกวา Subtree
นยามของโครงสรางตนไม• โครงสรางขอมลแบบตนไม มคณสมบตดงน 1. มโหนดทเรยกวา รากหรอรต (Root node) , R 2. โหนดทไมใชรตแบงยอยออกเปน n กลม โดยทแตละกลมไมมโหนด รวมกนเลย เชน กลม T1 , T2 ,…..Tn (n >=0) แตละกลมกเปนตนไมเหมอน
กน จะเรยกวาตนไมยอย (Subtree)
ลกษณะของทร
จากรป R เปนรทของตนไมยอย A,B,C,D A เปนรทของตนไมยอย E,F,G F เปนรทของตนไมยอย J B เปนรทของตนไมยอย H และ I
ชอสวนตางๆของตนไม
ระดบของโหนด (Level)
• ระดบของโหนดหนง ๆ แสดงถงหนวยระยะทางตามแนวดงของโหนดนนวาอยหางจากรตโหนดเทาไร ถากำาหนดวารตโหนดของตนไมนนอยทระดบ 1 และกงทกกงมความยาวเทากน หมดคอยาว 1 หนวย เลขระดบของโหนดใด ๆ คอจำานวนกงทนอยทสดจากรตโหนดบวกหนงเชน F มเลขระดบเปน 4 เปนตน
ดกรของโหนด (Level Degree)
•ดกรของโหนด คอ จำานวนตนไมยอยของโหนดนน จากรป โหนด X มดกร 1 โหนด A มดกร 2 สวนโหนด H มดกร 3 โหนด B มดกร 1 และโหนด E มดกร 0 เปนตน
โหนดทเปนใบ (Leaf Node)
• โหนดทเปนใบ หมายถงโหนดทมดกรเปน 0 เชนโหนด C, D, E, J, F และ G สวนโหนดทมดกรไมเทากบ 0 เรยกวา โหนดภายใน หรอ interior node หรอ branch node
Immediate Successor หรอ SON ของโหนด i• Immediate Successor คอโหนดทงหลายของตนไมยอย i ทม
คาระดบตำากวาโหนด i อยหนง เชน SON ของโหนด H คอโหนด E, I, และ F
Immediate Predecessor หรอ father ของโหนด i• Immediate Predecessor คอโหนดทมคาระดบสงกวาโหนด i อยหนง เชน FATHER ของโหนด J คอโหนด I, FATHER ของโหนด I คอโหนด H เปนตน
โครงสรางตนไม (Tree Structure)R
B XA
DC H Y
GIELeaf Nodes
Root Nodes
Nodes X เปน Immediate Predecessor ของ Y หรอ หรอ X X เปน เปน Father (Parent) Father (Parent) ของ ของ YY
Nodes Y เปน Immediate Successor ของ X หรอ หรอ Y Y เปน เปน son (Child) son (Child) ของ ของ XX
โครงสรางตนไม (Tree Structure)R
B XA
DC H Y
GIELeaf Nodes
Root Nodes
LevelLevel แสดงถงหนวยระยะทางตามแนวดงของโหนดวาอยหางจาก Root Node เปนระยะเทาไรและทกกงมความยาวเทากนคอ 1 หนวย
Level 0
Level 1
Level 2
Level 3
โครงสรางตนไม (Tree Structure)R
B XA
DC H Y
GIELeaf Nodes
Root Nodes
DegreeDegree แสดงถงจำานวนของ Subtree ของโหนดนน เชน A ม Degree2, X ม Degree 1
Level 0
Level 1
Level 2
Level 3
โครงสรางตนไม (Tree Structure)R
B XA
DC H Y
GIELeaf Nodes
Root Nodes
Leaf NodeLeaf Node แสดงถงโหนดทม Degree = 0 เชน C, D, E, I ,G สวนโหนดทม Degree <> 0 เรยกวา Branch Node หรอ Interior Node
Level 0
Level 1
Level 2
Level 3
โครงสรางตนไม (Tree Structure)R
B XA
DC H Y
GIE
Nodes X เปน Immediate Predecessor ของ Y หรอ หรอ X X เปน เปน Father (Parent) Father (Parent) ของ ของ YY
Nodes Y เปน Immediate Successor ของ X หรอ หรอ Y Y เปน เปน son (Child) son (Child) ของ ของ XX
Predecessor หมายถง ตว Node ทอยกอนหนาSuccessor หมายถง ตว Node ทมาทหลงเชน R, B, H เปน Predecessor ของ E, I, I เปน Successor ของ H
ตนไมแบบไบนาร (BinaryTree)• ตนไมไบนารเปน rooted binary tree ทวางเปลา หรอประกอบดวยรตโหนดและตนไมไบนาร 2 กลมทไมมโหนดรวมกน แตละกลมจะมชอเรยก (โดยตำาแหนงทอยหรอทเขยน ) วาตนไมยอยทางซาย (left subtree) และตนไมยอยทางขวา (ri
ght subtree) ตามลำาดบคำาวา วางเปลา ในนยามหมายความวา ตนไมไบนารตนนนมแตรตโหนดเพยงโหนดเดยวเทานน
A
B C
D E F G
CV G
D
S
F
X(ก)
(ข)(ค)
รป (ก ), (ข ) และ (ค ) เปนตนไมไบนาร
(ง) (จ) (ฉ)รป (ง ), (จ ) และ (ฉ)ไมใชตนไมไบนาร
ตนไมไบนารแบบสมบรณ (Complete Binary Tree)• ตนไมไบนารแบบสมบรณ หมายถงตนไมไบนารท
แตละโหนดภายในมโหนดยอยซายและขวา (นนคอแตละโหนดภายในม left son และ right so
n ) และโหนดใบ (leaf nodes) ทงหลายอยในระดบท n รป (ก ) เปนตนไมไบนารแบบสมบรณทม 3 ระดบ
D
K R
W O U M
(ก)
• ตนไมไบนารแบบสมบรณทมโหนดใบอยทระดบ n จะมโหนดทงหมดเทากบ 2n-1
W
D V
S A Q N
จากรป จำานวนโหนดเทากบ 23-1 = 7 โหนด
การแทนตนไมไบนารในหนวยความจำา• ตนไมไบนารสามารถแทนได 2 แบบ คอ 1. การแทนโดยอาศยพอยนเตอร
2. การแทนโดยอาศยแอดเดรสของโหนด หรอการแทนแบบ ซเควนเชยล
(sequential)
การแทนโดยอาศยพอยนเตอร
• ทำาไดโดยใหแตละโหนดมโครงสรางดงรปตอไปน
DATA LLINK RLINK
DATA LSON RSONหรอ
โครงสรางโหนดสำาหรบตนไมไบนาร
LLINK หรอ LSON เปนพอยนเตอรชไปยงตนไมยอยทางซาย สวน RLINK หรอ RSON เปนพอยนเตอรชไปยงตนไมยอยทางขวา
การแทนโดยอาศยแอดเดรสของโหนด หรอการแทนแบบซเควนเชยล• เปนการแทนตนไมไบนารดวยอารเรย 1 มตอารเรยเดยว การแทนแบบนเหมาะกบโครงสรางตนไมไบนารแบบ complete binary tree ทสด การแทนจะเรมตนดวยการใหหมายเลขแกแตละโหนด ตงแตระดบ 1 ระดบ 2 ...ไปเรอยๆ จนถงระดบ k การใหตวเลขในแตละระดบจะใหจากซายไปขวา โดยใหรตโหนดมหมายเลข 1 เสมอ การใหตวเลขจะตองถอวาตนไมไบนารเปนตนไมไบนารแบบสมบรณ จงจะใหตวเลขทอยแกโหนดได
AB X
C D
E
2 3
4 5 6 7
8 910 111213 14 15
1
การใหแอดเดรสแกตนไมไบนารทถกตอเตมใหสมบรณ
B X C D - - E - --A ----123456789101112131415
รปการแทนตนไมโดยใชอารเรย ถาพจาณาโหนดใดๆ เปนตำาแหนง x โหนดลกทางซายจะมดชน 2x สวนโหนดลกทางขวาจะมดชน 2x+1
Data07 Tree(25)
การเปลยน Tree ใหเปน Binary Tree
ตนไมแบบออดนาร(ordinary) คอตนไมทมดกรสงสดของแตละโหนดเปนเทาไรกได ซงการเปลยนใหเปน binary tree เปนการจดใหแตละโหนดมดกรสงสดเทากบสอง มขนตอนดงน
1. พจารณาทกงทางซายสดทอยใตพอเดยวกน
2. ตอกงของโหนดทางซายสดในขนท 1 ไปทางขวาตามลำาดบอาวโสกบพนองทเกดจากพอเดยวกน
3. ทำาขนท 1 และ 2 จนครบทกโหนด4. ปรบมมของแตละกง ประมาณ 45 องศา
Data07 Tree(26)
การเปลยน Tree ใหเปน Binary Tree
ขนท 1
ขนท 2
ขนท 3
ขนท 4
Data07 Tree(27)
การเปลยน Tree ใหเปน Binary Treeตวอยาง แสดงการเปลยนตนไมใหเปนแบบทวภาค
A
B F
C D
E H
G J K
L I
A
B F
C D
E H
G J K
L IA
BF
C
D
EH
GJ
K
L
I
โจทย
ขนท 1-3
ผลลพธ
การทองตนไม (Tree Traversal)Tree TraversalTree Traversal หมายถงการไปยงโหนดเพอประมวลผลบางอยางทตองการกระทำากบโหนดนน เชน หาขาวสาร
แบงออกเปน 3 วธ (ทนยมใช) 1 Pre-Order Traversal (RTLTR)
2. In-Order Traversal (TLRTR)
3. Post-Order Traversal (TLTRR)
0Data 7 Tree(29)การทองผาน Binary Tree
การทองผานโหนด หมายถง การเขาไปในโครงสรางตนไมเพอนำาขอมลในโหนดมาแสดง หรอเพอการคนหา หรอการประมวลผล การเดนเยยมโหนดม 3 วธ
1. Inorder traversal หรอ Symmetric order จะทำาการเยยมโหนดในตนไมยอยทางซายแบบอนออเดอร กอนเยยมโหนดรากและเยยมโหนดในตนไมยอยทางขวาแบบอนออเดอร (Left/ Root/Right)
2. Preorder traversal จะทำาการเยยมโหนดราก กอน เยยมโหนดในตนไมยอยทางซายแบบพรออเดอร และเยยมโหนดในตนไมยอยทางขวาแบบพรออเดอร (Root/ Left/ Right)
3. Postorder traversal หรอ Endorder จะทำาการเยยมโหนดในตนไมยอยทางซายแบบ โพสออเดอร
กอนเยยมโหนดในตนไมยอยทางขวาแบบ โพสออเดอร และเยยมโหนดราก (Left/ Right/ Root)
0Data 7 Tree(30)
1 แบบอนออเดอร (Left/ Root/Right) จากภาพจะได BAC 2. แบบพรออเดอร(Root/ Left/ Right) จากภาพจะ
ได ABC3. แบบโพสออเดอร(Left/ Right/ Root) จากภาพ
จะได BCA
1. แบบอนออเดอร (Left/ Root/Right) จากภาพจะได DB A EG C HFI2. แบบพรออเดอร(Root/ Left/ Right) จากภาพ จะได A BD CEG FHI3. แบบโพสออเดอร(Left/ Right/ Root) จากภาพ จะได DB GE HIF C A
การทองผาน Binary TreeA
B C
A
B C
DE F
G H I
การทองตนไมไบนาร (Binary Tree Traversal)
Y
R
XA
DC
G
แบบ Pre-Order Traversalstart
R
ResultResult
A C D X Y G
stop
การทองตนไมไบนาร (Binary Tree Traversal)
Y
R
XA
DC
G
แบบ In-Order Traversalstart
C
ResultResult
A D R G Y X
stop
การทองตนไมไบนาร (Binary Tree Traversal)
Y
R
XA
DC
G
แบบ Post-Order Traversalstart
C
ResultResult
D A G Y X R
stop
AB C
D
G
E F
H I
Pre-order : Pre-order : ABDGCEHIFABDGCEHIFIn-orderIn-order : : DGBAHEICF DGBAHEICFPost- order :Post- order : GDBHIEFCAGDBHIEFCA
+A -
* D
B C
จงทองเขาไปในตนไม แบบ
1.Pre-order 2.In-order 3.Post-order
EX1
Expression Tree
จากรปแสดง Expression tree ของ (a + b * c) + ((d * e + f ) * g)
เปนตนไมแบบไบนารท โหนดใบคอ operands, เชนคาคงทหรอตวแปร, และโหนดรากคอ operators
Data07 Tree(37)
คอตนไมทสรางขนจากตวกระทำา(operand) และเครองหมาย(operators) ทางคณตศาสตรของนพจน โดยการวางตวกระทำาทโหนดใบ(leave node) และวางเครองหมายไวทโหนดภายใน สำาหรบเครองหมายทเปนเครองหมายเดยว(unary operator) จะมกงตนไมยอยเพยงขางเดยว เรามกจะวาง เครองหมายเดยวไวทางซายของตวกระทำา ซงเครองหมายทจดเปนเครองหมายเดยว ไดแก - log() cos() และมเครองหมายเดยว ทถกจดวางไวทางขวาของตวกระทำา ไดแก แฟกทอเรยลฟงกชน เลขยกกำาลงตางๆ
ตวอยาง แสดงการสราง เอกเพรสชนทรแบบทวภาค จากนพจน X * Y + Z
Expression Tree
+
* Z
X Y
Data07 Tree(38)
ตวอยาง แสดงการสรางเอกเพรสชนทรจากนพจน (X – ((Y / R) * D))
จะไดวา • การเยยมโหนด แบบอนออเดอรจะได X-Y/R*D ซงอยในรปอนฟกฟอรม• การเยยมโหนด แบบพรออเดอรจะได -X*/YRD ซงอยในรปพรฟกฟอรม• การเยยมโหนด แบบโพสออเดอร จะได XYR/D*- ซงอยในรปโพสฟกฟอรม
Expression Tree
-
X *
/ D
Y R
การสราง Expression Tree• อานสญลกษณจากนพจนทละตว ถาตวทอานมาเปน operand ใหสรางโหนดของ tree หนงโหนดแลว push มนลงใน stack ถาตวทอานมาเปน operator ให pop จาก stack 2 ครง ซงจะได trees T1 และ T2 (T1 นำาออกกอน) แลวใหนำามาสรางเปน tree ใหมทมราก (root ) เปนตว operator และม left และ right children เปน T2 และ T1 ตามลำาดบ จากนนใหใส tree ใหมนกลบลง stack
• ถาอนพต คอ a b + c d e + * *1
2
3
4
5
• ถาอนพต คอ a b + c d e + * *
6
7
• ถาอนพต คอ a b + c d e + * *
แบบฝกหด1. จากตนไมไบนารทกำาหนด ใหเขยนผลลพธจากการทองเขาไปในตนไม
แบบ Preorder ,Inorder , Postorder
2. จงสราง Expression Tree จากนพจนตอไปน 2.1 (A - 2 * (B + C) – D * E) * F
2.2 A + (B – C) * D ^ ( E * F )
A
B H
F G I J
K MD
• 3. จงแปลงทรใหเปนไบนารทร
แบบฝกหด
A
B H
F G I J
K M
C
D E