ทรี (trees) - wordpress.com · 2011-11-01 ·...

109
ทรี (Trees) 1 โครงสร้างข้อมูล บทที ่ 6 ทรี

Upload: others

Post on 23-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ทร (Trees)

1 โครงสรางขอมล บทท 6 ทร

Page 2: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

แนวคดพนฐานของทร (Basic Tree Concepts) (1) เปนโครงสรางชนดไมเชงเสน (non-Linear) คอ ลสตทสมาชกแตละตวสามารถ

มสมาชกตวถดไป (Successor) ไดมากกวาหนงตว

เปนไปตามความสมพนธในลกษณะแบบล าดบชน (Hierarchical

Relationship)

นยมน าไปใชเพอน าเสนอเปนแผนผงองคกร (Organization Chart) โครงสรางไดเรกทอร (Directory)

ทรประกอบดวยโหนด (Node) ทใชส าหรบบรรจขอมล

โครงสรางขอมล บทท 6 ทร 2

Page 3: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

แนวคดพนฐานของทร (Basic Tree Concepts) (2) ทรประกอบดวยโหนด (Node) ทใชส าหรบบรรจขอมล

จะมกงเปนเสนทเชอมโยงโหนดเขาดวยกนทเรยกวาบรานซ (Branch)

จ านวนบรานซทสมพนธกบโหนดเรยกวาดกร (Degree)

โหนกแรกเรยกวารท (Root)

โหนดทกโหนดยกเวนรทโหนดจะมเพยง 1 สมาชกตวกอนหนา (Predecessor) ขณะทสมาชกตวถดไป (Successor) อาจเปน 0 หรอ 1 หรอมากกวา 1 กได

โหนดใบ (Leaf) โหนดใบทไมมบรานซเชอมโยงไปยงโหนดตวถดไป (โหนดทไมมตวตามหลง)

โครงสรางขอมล บทท 6 ทร 3

Page 4: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

แนวคดพนฐานของทร (Basic Tree Concepts) (3) โหนดพอ (Parent) จะมโหนดตามหลง

โหนดทมตวกอนหนากคอโหนดลก (Child)

โหนดลกตงแตสองโหนดขนไปทมาจากพอเดยวกนเรยกโหนดพนอง (Siblings)

โครงสรางขอมล บทท 6 ทร 4

Page 5: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

แนวคดพนฐานของทร (Basic Tree Concepts) (4)

โครงสรางขอมล บทท 6 ทร 5

A

H I G

F E

D C

B

Root

Page 6: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

แนวคดพนฐานของทร (Basic Tree Concepts) (5) โหนดราก (Root Node) = > A (โหนดแรกส าหรบโครงสรางทร) โหนดพอ (Parents) = > A, B, C (โหนดทม สมาชกตวถดไป) โหนดลก (Children) = > B, E, F, C, D, G, H และ I (โหนดทมสมาชก

ตวกอนหนา) โหนดพนอง (Siblings) = > {B, E, F}, {C, D} และ {G, H, I} โหนดใบ (Leaf Node) = > C, D, E, G, H และ I (โหนดทไมม สมาชก

ตวถดไป) ดกรทงหมดของทร = > 8 ดกรทงหมดของโหนด F = > 3 จ านวนของ Leaf โหนด = > 6 ระดบความสงหรอความลกของทร = > Height = 2 + 1 = 3

โครงสรางขอมล บทท 6 ทร 6

Page 7: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

แนวคดพนฐานของทร (Basic Tree Concepts) (6) ทรสามารถแบงยอยออกเปนซบทร (Subtrees)

ซบทร เปนโครงสรางทมการเชอมโยงถดจาดรทโหนด

โหนดแรกของซบทรกคอรทโหนดของซบทรนนๆ

โครงสรางขอมล บทท 6 ทร 7

A

B

C B

E

G H I

F

Subtree B

Root of Subtree I

Page 8: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

รปแบบการน าเสนอโครงสรางขอมลทร (Tree Representation) (1) 1. แบบโครงสรางทรทวไป (General Tree) รปแบบการน าเสนอเหมอนผง

องคกรทวไปทลดหลนเปนล าดบชน

โครงสรางขอมล บทท 6 ทร 8

… …

… …

Page 9: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

รปแบบการน าเสนอโครงสรางขอมลทร (Tree Representation) (2) 2. แบบยอหนา (Indented List) รปแบบคลายการเขยนโปรแกรมเชง

โครงสราง ทใชยอหนาเปนตวก าหนดรปแบบของโครงสรางในสวนระดบยอยๆ ลงไป

โครงสรางขอมล บทท 6 ทร 9

Computer Case . . CPU Controller ALU . . ROM 3.5” Disk . . CD-ROM . .

Page 10: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

รปแบบการน าเสนอโครงสรางขอมลทร (Tree Representation) (3) 3. แบบวงเลบ (Parenthetical List) รปแบบมความคลายคลงกบการ

แทนขอมลดวยนพจนคณตศาสตรดวยการใชเครองหมายวงเลบก ากบ

โครงสรางขอมล บทท 6 ทร 10

Computer (Case (...) CPU (Controller ALU … ROM) 3.5” Disk (…) … CD-ROM (…) )

A (B (C D) E F (G H I))

Page 11: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ไบนารทร (Binary Trees) (1) คณสมบตส าคญคอ

เปนทรทสามารถมลกไดไมเกนสองโหนด

โครงสรางขอมล บทท 6 ทร 11

A

B

B C

E

F

Left subtree Right subtree

Page 12: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ไบนารทร (Binary Trees) (2) ไบนารทรในรปแบบตางๆ

โครงสรางขอมล บทท 6 ทร 12

No nodes (null tree)

A A

B

A

B

A

C B

A

C B

D E

A

C

B

A

C

B

1 2 3 4

5 6 7 8

Page 13: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

คณสมบตของไบนารทร (Properties) (1) ความสงของไบนาร (Height of Binary Trees)

ความสงมากสดของทร (Maximum Height)

Hmax = N

ความสงนอยทสดของทร (Maximum Height)

Hmin = [log2N] + 1

จ านวนโหนดทนอยทสด (Minimum Nodes)

Nmin = H

จ านวนโหนดทมากทสด (Maximum Nodes)

Nmax = 2H - 1

โครงสรางขอมล บทท 6 ทร 13

Page 14: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

คณสมบตของไบนารทร (Properties) (2) ความสมดล (Balance) ความสมดลของไบนารทรจะสามารถทราบไดจากคา

Balance Factor เทากบ

B = HL - HR

HL = ความสงของซบทรดานซาย

HR = ความสงของซบทรดานขวา

โครงสรางขอมล บทท 6 ทร 14

A

C B

D E

A

C

B HR = 1

HL = 2 HR = 2

HL = 0

Balance Factor = 1 Balance Factor = 2

Page 15: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ไบนารสมบรณและเกอบสมบรณ (Complete and Nearly Complete Binary Trees) (1)

ไบนารทรแบบสมบรณเปนไปตามสตร Nmax โหนดของซบทรดานซาย และซบทรดานขวาจะมจ านวนเทากน

โครงสรางขอมล บทท 6 ทร 15

A A

C B

A

C B

D E G F

Page 16: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ไบนารสมบรณและเกอบสมบรณ (Complete and Nearly Complete Binary Trees) (2)

ไบนารทรเกอบสมบรณเปนไปตามสตร Hmin เปนทรทมโหนดเตมทกโหนด ยกเวนในระดบสดทายทมโหนดเฉพาะทางดานซาย

โครงสรางขอมล บทท 6 ทร 16

A

C B

D E F

A

C B

D

A

C B

D E

Page 17: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การแทนไบนารทรในหนวยความจ า (Binary Trees Representations) (1)

การแทนไบนารทรดวยอารเรย กรณททรอยในรปแบบของไบนารทรแบบสมบรณ ล าดบต าแหนงขอมลในทรในแตละระดบดวยการเรยงจากซายไปขวา

โครงสรางขอมล บทท 6 ทร 17

A

C B

D E G F

A B C D E F G

Page 18: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การแทนไบนารทรในหนวยความจ า (Binary Trees Representations) (2)

การแทนไบนารทรดวยอารเรย กรณททรอยในรปแบบของไบนารทรแบบไมสมบรณหรอเกอบสมบรณ ล าดบต าแหนงกจะมการจดเรยงแตกตางไปจากเดม โดยการแปลงไบนารทไมสมบรณนมาเปนไบนารทรแบบสมบรณดวยการเพมโหนด

โครงสรางขอมล บทท 6 ทร 18

A

C B

D E

A B C D E

A

C B

D E

Page 19: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การแทนไบนารทรในหนวยความจ า (Binary Trees Representations) (3)

การแทนไบนารทรดวยลงกลสต - > ชวยแกปญหาการสญเสยพนทวางเปลา โดยแตละโหนดประกอบดวยขอมลส าคญอย 3 ฟลดดวยกนคอ ขอมลทบรรจอยในโหนด

พอยนเตอรทช ไปยงซบทรดานซาย

พอยนเตอรทช ไปยงซบทรดานขวา

โครงสรางขอมล บทท 6 ทร 19

Page 20: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การแทนไบนารทรในหนวยความจ า (Binary Trees Representations) (3)

การแทนไบนารทรดวยลงกลสต

โครงสรางขอมล บทท 6 ทร 20

A

B C

D E F G

A

B C

E G

Page 21: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การทองเขาไปในไบนารทร (Binary Tree Traversals) การทองเขาไปในทรจะมอย 2 วธดวยกนคอ

1. วธการทองแบบแนวลก (Depth-First Traversals)

2. วธทองแบบแนวกวาง (Breadth-First Traversals)

โครงสรางขอมล บทท 6 ทร 21

Page 22: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

วธการทองแบบแนวลก (Depth-First Traversals) (1) เปนวธการทองเขาไปในทรดวยการเดนทางผานจากรทโหนดลงไปยงโหนดลกๆ มทง

ฝ งดานซายและดานขวา N แทน รทโหนด

L แทน ซบทรดานซาย

R แทน ซบทรดานขวา

วธการทองแบบแนวลก ประกอบดวย แบบพรออรเดอร (Preorder)

แบบอนออรเดอร (Inorder)

แบบโพสตออรเดอร (Postorder)

โครงสรางขอมล บทท 6 ทร 22

Page 23: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

วธการทองแบบแนวลก (Depth-First Traversals) (2) แบบพรออรเดอร (Preorder Traversal : NLR)

จะเรมตนกระท าทรทโหนดกอนล าดบแรก ตามดวยซบทรดานซาย และซบทรดานขวา

โครงสรางขอมล บทท 6 ทร 23

N

L R

1

2 3

Page 24: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

วธการทองแบบแนวลก (Depth-First Traversals) (4) แบบพรออรเดอร (Preorder Traversal : NLR)

โครงสรางขอมล บทท 6 ทร 24

Algorithm PreOrder (root) Traverse a binary tree in node-left-right sequence. Pre root is the entry node of a tree or subtree Post each node has been processed in order 1 if (root is not null) 1 process (root) 2 preOrder (leftSubtree) 3 preOrder (rightSubtree) 2 end if end preOrder

Page 25: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

วธการทองแบบแนวลก (Depth-First Traversals) (5) แบบอนออรเดอร (Inorder Traversal : LNR)

จะเรมตนกระท าทซบทรดานซายกอนเปนล าดบแรก ตามดวยรทโหนด และทายสดคอซบทรดานขวา

โครงสรางขอมล บทท 6 ทร 25

N

L R

2

1 3

Page 26: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

วธการทองแบบแนวลก (Depth-First Traversals) (6) แบบอนออรเดอร (Inorder Traversal : LNR)

โครงสรางขอมล บทท 6 ทร 26

Algorithm inOrder (root) Traverse a binary tree in left-node-right sequence. Pre root is the entry node of a tree or subtree Post each node has been processed in order 1 if (root is not null) 1 inOrder (leftSubtree) 2 process (root) 3 inOrder (rightSubtree) 2 end if end inOrder

Page 27: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

วธการทองแบบแนวลก (Depth-First Traversals) (7) แบบโพสตออรเดอร (Postorder Traversal : LRN)

จะเรมตนกระท าทซบทรดานซายกอนเปนล าดบแรก ตามดวยซบทรดานขวา และทายสดคอรทโหนด

โครงสรางขอมล บทท 6 ทร 27

N

L R

3

1 2

Page 28: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

วธการทองแบบแนวลก (Depth-First Traversals) (8) แบบโพสตออรเดอร (Postorder Traversal : LRN)

โครงสรางขอมล บทท 6 ทร 28

Algorithm postOrder (root) Traverse a binary tree in left-right-node sequence. Pre root is the entry node of a tree or subtree Post each node has been processed in order 1 if (root is not null) 1 preOrder (leftSubtree) 2 preOrder (rightSubtree) 3 process (root) 2 end if end postOrder

Page 29: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

วธการทองแบบแนวลก (Depth-First Traversals) (9) วธทองแบบ Preorder

โครงสรางขอมล บทท 6 ทร 29

Processing order “Walking” Order

A

B

C D

E

F

A

B E

C D F

C D B A F E

Page 30: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

วธการทองแบบแนวลก (Depth-First Traversals) (10) วธทองแบบ Inorder

โครงสรางขอมล บทท 6 ทร 30

Processing order “Walking” Order

A

B

C D

E

F

A

B E

C D F

C D B A F E

Page 31: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

วธการทองแบบแนวลก (Depth-First Traversals) (11) วธทองแบบ Postorder

โครงสรางขอมล บทท 6 ทร 31

Processing order “Walking” Order

A

B

C D

E

F

A

B E

C D F

C D B A F E

Page 32: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

วธการทองแบบแนวกวาง (Breadth-First Traversals) (1) เปนวธทองเขาไปในทรดวยการกระท าทละระดบจากบนลงลาง

เรมจากรทโหนดในแตละระดบตามแนวกวาง จากซายไปขวา จนครบทกระดบ

โครงสรางขอมล บทท 6 ทร 32

Processing order “Walking” Order

A

B

C D

E

F

A

B E

C D F

Page 33: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

วธการทองแบบแนวกวาง (Breadth-First Traversals) (2)

โครงสรางขอมล บทท 6 ทร 33

A

F C D

E B

Page 34: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

วธการทองแบบแนวกวาง (Breadth-First Traversals) (3)

โครงสรางขอมล บทท 6 ทร 34

Algorithm breadthFirst (root) Process tree using breadth-first traversal. Pre root is node to be processed Post tree has been process 1 set currentNode to root 2 createQueue (bfQueue) 3 loop (currentNode not null) 1 process (currentNode) 2 if (left subtree not null) 1 enqueue (bfQueue, leftSubtree) 3 end if 4 if (right subtree not null) 1 enqueue (bfQueue, rightSubtree) 5 end if 6 if (not emptyQueue (bfQueue)) 1 set currentNode to dequeue (bfQueue) 7 else 8 end if 4 end loop 5 destroyQueue (bfQueue) end breadthFirst

Page 35: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

เอกซเพรสชนทร (Expression Trees) (1) เอกซเพรสชนทร กคอ ไบนารทร ซงการแทนนพจนในเอกซเพรสชนทรนน จะตองเปน

ตามคณสมบตดงตอไปน 1. ตวถกด าเนนการหรอโอเปอแรนดจะเกบไวทโหนดใบ (Leaf Node)

2. ตวด าเนนการหรอโอเปอเรเตอรจะเกบไวทรทโหนดหรอโหนดภายใน (Internal Nodes) ทไมใชโหนดใบ

3. ซบทร ในทนกคอนพจนยอย โดยจะมรทโหนดเปนตวโอเปอเรเตอร

โครงสรางขอมล บทท 6 ทร 35

+

*

+ a

d

b c

a * (b + c) + d a * (b + c) + d

Page 36: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

เอกซเพรสชนทร (Expression Trees) (2) เอกซเพรสชนทรแบ Infix จะใชวธการทองเขาไปในทรแบบ Inorder

เอกซเพรสชนทรแบ Postfix จะใชวธการทองเขาไปในทรแบบ Postorder

เอกซเพรสชนทรแบ Prefix จะใชวธการทองเขาไปในทรแบบ Preorder

โครงสรางขอมล บทท 6 ทร 36

Page 37: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การทองเขาไปในเอกซเพรสชนทรแบบ Infix (1) เมอมการทองเพอพมพนพจนในรปแบบ Infix จะตองมการเพมเครองหมายวงเลบเปดทจดเรมตนตนของแตละนพจน

และจะปดดวยเครองหมายวงเลบปดทสวนปลายของนพจนนนๆ

โครงสรางขอมล บทท 6 ทร 37

*

+ a

d

b c

a * (b + c) + d ( a * (b + c) + d )

+ (

(

)

)

( )

Page 38: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การทองเขาไปในเอกซเพรสชนทรแบบ Infix (2)

โครงสรางขอมล บทท 6 ทร 38

Algorithm infix (tree) Print the infix expression for an expression tree. Pre tree is a pointer to an expressiontree Post the infix expression has been printed 1 if (tree not empty) 1 if (tree token is an operand) 1 print (tree token) 2 else 1 print (open parenthesis) 2 print (tree left sebtree) 3 print tree token) 4 print (tree right sebtree) 5 print (close parenthesis) 3 end if 2 end if end infix

Page 39: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การทองเขาไปในเอกซเพรสชนทรแบบ Postfix (1) ใชหลกการทองเดยวกนกบ Postorder

โครงสรางขอมล บทท 6 ทร 39

*

+ a

d

b c

a * (b + c) + d a b c + * d +

+

Page 40: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การทองเขาไปในเอกซเพรสชนทรแบบ Infix (2)

โครงสรางขอมล บทท 6 ทร 40

Algorithm postfix (tree) Print the infix expression for an expression tree. Pre tree is a pointer to an expressiontree Post the infix expression has been printed 1 if (tree not empty) 1 postfix (tree left subtree) 2 postfix (tree right subtree) 3 print (tree token) 2 end if end postfix

Page 41: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การทองเขาไปในเอกซเพรสชนทรแบบ Prefix (1) ใชหลกการทองเดยวกนกบ Perorder

โครงสรางขอมล บทท 6 ทร 41

*

+ a

d

b c

a * (b + c) + d + * a + b c d

+

Page 42: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การทองเขาไปในเอกซเพรสชนทรแบบ Infix (2)

โครงสรางขอมล บทท 6 ทร 42

Algorithm prefix (tree) Print the infix expression for an expression tree. Pre tree is a pointer to an expressiontree Post the infix expression has been printed 1 if (tree not empty) 1 print (tree token) 2 prefix (tree left subtree) 3 prefix (tree right subtree) 2 end if end prefix

Page 43: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

เจเนอรลทร (General Trees) เปนทรทแตละโหนดสามารถมโหนดเพมเตมไดไมจ ากด

การแทรกโหนดในเจเนอรลทรสามารถท าไดหลายวธ การแทรกโหนดในเจเนอรลทรแบบ FIFO

การแทรกโหนดในเจเนอรลทรแบบ LIFO

โครงสรางขอมล บทท 6 ทร 43

Page 44: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การแทรกโหนดในเจเนอรลทรแบบ FIFO ท าการแทรกโหนดทต าแหนงปลายลสต (ต าแหนงทายคว)

โครงสรางขอมล บทท 6 ทร 44

A

E

D C

B F

Before insertion

A

E

D C

B F

After insertion

N

M

Page 45: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การแทรกโหนดในเจเนอรลทรแบบ LIFO ท าการแทรกโหนดทต าแหนงหนากลม (เปนไปตามโครงสรางแบบสแตก)

โครงสรางขอมล บทท 6 ทร 45

A

E

D C

B F

Before insertion

A

E

D C

B F

After insertion

F

M

Page 46: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การลบโหนดในเจเนอรลทรแบบ (General Tree Deletions) การลบโหนดจะลบไดเฉพาะโหนดใบเทานน

โหนดมลกจะไมสามารถถกลบออกไปได

ถามการยนยนการลบโหนดทมลก โปรแกรมจะแจง ไมสามารถลบได นอกจากจะท าการลบโหนดลกออกกอน

โครงสรางขอมล บทท 6 ทร 46

Page 47: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การแปลงเจเนอรลทรมาเปนไบนารทร (Changing a General Tree to a Binary Tree) (1)

การแปลงเจเนอรลทรมาเปนไบนารทร ม 3 ขนตอน 1. ใหก าหนดพอยนเตอรจากโหนดพอชไปยงโหนดลกฝ งซาย

2. เชอมโยงโหนดพนอง (Sibling) เขาดวยกน

3. ลบ Branch ทไมตองการออกทงหมด

หลงจากท าครบทง 3 ขนตอนแลว ใหปรบทรใหม กจะไดผลลพธออกมาเปนไบนารทร

โครงสรางขอมล บทท 6 ทร 47

Page 48: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การแปลงเจเนอรลทรมาเปนไบนารทร (Changing a General Tree to a Binary Tree) (2)

โครงสรางขอมล บทท 6 ทร 48

เจเนอรลทร

A

E

D C

B F

H G I

ก าหนดพอยนเตอรชไปยงลกฝ งซาย

A

E

D C

B F

H G I

Page 49: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การแปลงเจเนอรลทรมาเปนไบนารทร (Changing a General Tree to a Binary Tree) (3)

โครงสรางขอมล บทท 6 ทร 49

เชอมโยงโหนดพนอง ลบ Branch ทไมตองการออก

A

E

D C

B F

H G I

A

E

D C

B F

H G I

Page 50: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การแปลงเจเนอรลทรมาเปนไบนารทร (Changing a General Tree to a Binary Tree) (4)

โครงสรางขอมล บทท 6 ทร 50

ผลลพธทไดเปนไบนารทร

A

E

D

C

B

F

H

G

I

Page 51: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ไบนารเสรชทร (Binary Search Trees : BST) (1) ไบนารเสรชทร ถอเปนการน าไบนารทรมาประยกตใชงานเพอการคนหาขอมล

ไบนารเสรชทรประกอบดวยคณสมบตดงตอน 1. ทกๆ โหนดในซบทรดานซายตองมคานอยกวารทโหนด 2. ทก๐ โหนดในซบทรขางขวาตองมคามากกวาหรอเทากบรทโหนด 3. แตละซบทรจะตองเปนไบนารเสรชทร

K เปนคย

โครงสรางขอมล บทท 6 ทร 51

K

All < K All >= K

Page 52: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ไบนารเสรชทร (Binary Search Trees : BST) (2) ไบนารเสรชทรทถกตอง

โครงสรางขอมล บทท 6 ทร 52

17 17

6 19

17

6

3

17

6 19

17

22

19

14 3

Page 53: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ไบนารเสรชทร (Binary Search Trees : BST) (3) ไบนารเสรชทรทไมถกตอง

โครงสรางขอมล บทท 6 ทร 53

17

22 19

17

6 19

14 11

17

6 11

17

6 19

22 3

Page 54: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การทองเขาไปในไบนารเสรชทร (BST Traversals) (1)

โครงสรางขอมล บทท 6 ทร 54

23

18 44

12 20

วธการทองแบบ Preorder

35 52

NLR

Page 55: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การทองเขาไปในไบนารเสรชทร (BST Traversals) (2)

โครงสรางขอมล บทท 6 ทร 55

23

18 44

12 20

วธการทองแบบ Postorder

35 52

LRN

Page 56: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การทองเขาไปในไบนารเสรชทร (BST Traversals) (3)

โครงสรางขอมล บทท 6 ทร 56

23

18 44

12 20

วธการทองแบบ Inorder

35 52

LNR

Page 57: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การคนหาขอมลในไบนารเสรชทร (BST Search) (1) การคนหาโหนดทมคาต าสด (Find the Smallest Node)

โหนดทมคาต าสดคอ 12 อยในต าแหนงโหนดใบดานซายของทร การคนหาโหนดทเกบคาต าสดในทร ดวยการเดนตามบรานซทางซายมอไปจนกระทงถง

โหนดใบ

กจะคนพบโหนดทมคาต าสดในไบนารเสรชทร

โครงสรางขอมล บทท 6 ทร 57

23

18 44

12 20 35 52

Page 58: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การคนหาขอมลในไบนารเสรชทร (BST Search) (2)

โครงสรางขอมล บทท 6 ทร 58

Algorithm findSmallestBST (root) This algorithm finds the smallest node in a BST. Pre root is a pointer to a nonempty BTS or subtree Return address of smallest node 1 if (left subtree empty) 1 return (root) 2 end if 3 Return findSmallestBST (left Subtree) end findSmallestBST

Page 59: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การคนหาขอมลในไบนารเสรชทร (BST Search) (3) การคนหาโหนดทมคาสงสด (Find the Largest Node)

การคนหาจะเรมตนจากรทโหนด และเดนตามไปยงบรานชฝ งขวา

จนกระทงพบโหนดทมคาสงสด

โครงสรางขอมล บทท 6 ทร 59

Algorithm findLargestBST (root) This algorithm finds the largest node in a BST. Pre root is a pointer to a nonempty BTS or subtree Return address of largest node 1 if (right subtree empty) 1 return (root) 2 end if 3 Return findSmallestBST (right Subtree) end findLargestBST

Page 60: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การคนหาขอมลในไบนารเสรชทร (BST Search) (4) การคนหาโหนดตามทตองการ

(Find a Requested Node) การคนหาขอมลทตองการ - >

แทนขอมลไบนารเสรชทรในหนวยความจ าแบบอารเรยกบการคนหาแบบไบนาร

ก าหนดคา Target ทตองการคนหา เมอไดคาทตองการคนหาน าไปเปรยบเทยบกบรทโหนด

ถามคานอยกวารทโหนดกเปรยบเทยบคา Target กบทรดานซายเทานน

ถามคามากกวารทโหนดกเปรยบเทยบคา Target กบทรดานขวาเทานน

จนพบ

สมมต ให Target = 20

โครงสรางขอมล บทท 6 ทร 60

23

18 44

12 20 35 52

12 18 20 13 35 44 52

Sequenced array

Search point in binary search

Page 61: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การคนหาขอมลในไบนารเสรชทร (BST Search) (5)

โครงสรางขอมล บทท 6 ทร 61

Algorithm searchBST (root, targetKey) Search a binarysearch tree for a givenvalue. Pre root is the root to a binary tree or subtree targetKey is the key value requested Return the node address if the value is found null if the node is not in the tree 1 if (empty tree) not found 1 return null 2 end if 3 if (targetKey < root) 1 return searchBST (left subtree, targetKey) 4 else if (targetKey > root) 1 return searchBST (right subtree, targetKey) 5 else found target key return root 6 end if end searchBST

Page 62: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การด าเนนงานในไบนารเสรชทร (BST Operation) (1) การแทรกโหนด (Insertion)

การแทรกโหนดใน BST จะด าเนนการแทรกทต าแหนงโหนดใบ หนอโหนดทคลายใบ

กระท าการแทรกทโหนดใบในต าแหนงทยงคงไวซงคณสมบตของ BST

โครงสรางขอมล บทท 6 ทร 62

23

18 44

12 20 35 52

23

18 44

12 20 35 52

19

Before inserting After inserting 19

Page 63: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การด าเนนงานในไบนารเสรชทร (BST Operation) (2)

โครงสรางขอมล บทท 6 ทร 63

23

18 44

12 20 35 52

23

18 44

12 20 35 52

19

After inserting 38 After inserting 23

38 19 38 23

Page 64: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การด าเนนงานในไบนารเสรชทร (BST Operation) (3)

โครงสรางขอมล บทท 6 ทร 64

Algorithm addBST (root, newNode) Insert node containing new data into BST using recursion. Pre root is address of current node in a BST NewNode is address of node containing data Post newNode inserted into the tree Return address of potential new tree root 1 if (empty tree) 1 set root to newNode 2 return newNode 2 end if Locate null subtree for insertion 3 if (newNode < root) 1 return addBST (left subtree, targetKey) 4 else if (targetKey > root) 1 return addBST (right subtree, targetKey) 5 end if end addBST

Page 65: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การด าเนนงานในไบนารเสรชทร (BST Operation) (4)

โครงสรางขอมล บทท 6 ทร 65

1

9

newNode

1

9

1

2

1

9

2

0

9

newNode < root go left

1

9

1

2 2

0

9

newNode > root go fight

1

9

1

2 2

0

9

Subtree empty Insert here

1

9

1

2 2

0

9

Page 66: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การด าเนนงานในไบนารเสรชทร (BST Operation) (5) การลบโหนด (Insertion)

การลบโหนดออกจากไบนารเสรชทร มความเปนไปได 4 ประการ 1. กรณโหนดทตองการลบไมมลก ใหด าเนนการลบไดทนท 2. กรณโหนดทตองการลบมเฉพาะซบทรดานขวา ใหท าการลบโหนดดงกลาวทง

และดงซบทรดานขวาขนมาแทน 3. กรณโหนดทตองการลบมเฉพาะซบทรดานซาย ใหท าการลบโหนดดงกลาวทง

และดงซบทรดานซายขนมาแทน 4. กรณโหนดทตองการลบมสองโหนดซบทร (ทงดานซายและขวา) ม 2 แนวทาง

ใหด าเนนการหาโหนดทมคามากทสดในซบทรดานซายของโหนดทตองการลบ และเคลอนยายมาแทนทต าแหนงโหนดทถกลบ

ใหด าเนนการหาโหนดทมคานอยทสดในซบทรดานขวาของโหนดทตองการลบ และเคลอนยายมาแทนทต าแหนงทโหนดถกลบ

โครงสรางขอมล บทท 6 ทร 66

Page 67: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การด าเนนงานในไบนารเสรชทร (BST Operation) (6)

โครงสรางขอมล บทท 6 ทร 67

Algorithm deleteBST (root, newNode) This algorithem deletes a node from a BST. Pre root is reference to node to be deleted dltKey is key of node to be deleted Post node deleted Return true if node deleted, false if not found 1 if (empty tree) 1 return false 2 end if 3 if (dltKey < root) 1 return deleteBST (left subtree, targetKey) 4 else if (dlkKey > root) 1 return deleteBST (right subtree, targetKey) 5 end if

Page 68: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การด าเนนงานในไบนารเสรชทร (BST Operation) (7)

โครงสรางขอมล บทท 6 ทร 68

Delete node found-test for leaf node 1 if (no left subtree) 1 make right subtree the root 2 return ture 2 else if (no right subtree) 1 make left subtree the root 2 return ture 3 else 1 save root in deleteNode 2 set largest to largestBST (left subtree) 3 move data in largest to deleteNode 4 return deleteBST (left subtree of deleteNode, key of largest) 4 end if 6 End if end deleteBST

Page 69: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การด าเนนงานในไบนารเสรชทร (BST Operation) (7)

โครงสรางขอมล บทท 6 ทร 69

dltNode 1

7

9 2

3

5

Node to be delete

11

23

2

1 1

7

2

0 2

2

1

7

9 2

3

5

Largest key on Left subtree

11 2

1 1

7

2

0 2

2

Find dltKey Find largest

Page 70: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การด าเนนงานในไบนารเสรชทร (BST Operation) (8)

โครงสรางขอมล บทท 6 ทร 70

1

7

9 2

2

5

Node largest data here

11 2

1 1

7

2

0 2

2

1

7

9 2

2

5

Largest node deleteed

11 2

1 1

7

2

0

Move largest data Delete largest node

Page 71: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

เอวแอลเสรชทร (AVL Search Trees) (1) AVL Tree คอ ไบนารเสรชทรทเมอน าความสงของซบทรมาหกลบกนแลวจะตองมคาไม

มากไปกวา 1 ถอวาเปนทรทมความสมดล AVL Tree คอ ไบนารเสรชทรทซบทรดานซาย และซบทรดานขวาจะมคา Balance

Factor เทากบ +1, 0 หรอ -1 เทานน

+1 หมายถง ซายสง (Left Hight : LH)

0 หมายถง สงเทากน (Even Hight : EH) -1 หมายถง ขวาสงสด (Right Hight : RH)

ความสงของทรสงผลตอความเรวในการคนหาขอมล ทรมความสงมากขน ท าใหเราตองท าการเปรยบเทยบคาขอมลมากขนในระหวางทองไปในทร

โครงสรางขอมล บทท 6 ทร 71

|HL - HR| <= 1

Page 72: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

เอวแอลเสรชทร (AVL Search Trees) (2)

โครงสรางขอมล บทท 6 ทร 72

8

12

14

18

20

23

44

52 BST ทไมมความสมดล

23

18 44

12 20

8 14

52

AVL Tree

Page 73: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

เอวแอลเสรชทร (AVL Search Trees) (3)

โครงสรางขอมล บทท 6 ทร 73

23

18 44

12 20

8 14

52

รายละเอยดแสดงความสงของทร

18

12 20

8 14

LH

LH

LH

EH EH

EH EH

EH

RH

44

52

EH

RH

EH EH

EH EH

Page 74: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ความสมดลของทร (Balancing Trees) (1) เมอมการเพมโหนดหรอลบโหนดออกจากทร ท าใหทรไมสมดลได

(Unbalancede) ถามการตรวจสอบพบวาทรไมสทดล จ าเปนตองด าเนนการปรบความสมดลเสยใหม

ดวยวธการหมนโหนด (Rotating Nodes)

ส าหรบทรทไมสมดล สามารถเกดขนไดดวย 4 กรณดงตอไปน Left of Left (ซบทร LH ของทร LH)

Right of Right (ซบทร RH ของทร RH)

Right of Left (รท LH ซบทรซาย RH)

Left of Right (รท RH ซบทรขวา LH)

โครงสรางขอมล บทท 6 ทร 74

Page 75: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ความสมดลของทร (Balancing Trees) (2)

โครงสรางขอมล บทท 6 ทร 75

Case 1 : Left of Left (ความไมสมดลของทร)

18

12 20

8 14

4 Insert 4

EH

EH EH

LH

EH

18

12 20

8 14

4

LH

EH LH

LH

EH

EH

Before After

Unbalanced

Page 76: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ความสมดลของทร (Balancing Trees) (3)

โครงสรางขอมล บทท 6 ทร 76

Case 2 : Right of Right (ความไมสมดลของทร)

14

12 20

18 23

44 Insert 44

EH

EH EH

RH

EH

14

12 20

8 23

44

EH

EH RH

RH

RH

EH

Before After

Unbalanced

Page 77: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ความสมดลของทร (Balancing Trees) (4)

โครงสรางขอมล บทท 6 ทร 77

Case 3 : Right of Left (ความไมสมดลของทร)

18

12 20

4 14

13 Insert 13

EH

EH EH

RH

EH

18

12 20

4 14

13

EH

EH

RH

LH

EH

Before After

Unbalanced

RH

Page 78: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ความสมดลของทร (Balancing Trees) (4)

โครงสรางขอมล บทท 6 ทร 78

Case 4 : Left of Right (ความไมสมดลของทร)

14

12 20

18 44

19 Insert 19

EH

EH EH

RH

EH

14

12 20

18 44

19

RH

EH

RH

EH

Before After

Unbalanced

EH EH

Page 79: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

กรณท 1 : Left of Left (1) การหมนโหนดทไมสมดลไปทางขวา (แบบงาย)

โครงสรางขอมล บทท 6 ทร 79

20

18

12

EH

LH

LH

Unbalanced (left of Left)

After inserting 12

20

18

12

EH

EH

EH

After rotation

Rotate right

Page 80: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

กรณท 1 : Left of Left (2) การหมนโหนดทไมสมดลไปทางขวา (แบบซบซอนยงขน)

โครงสรางขอมล บทท 6 ทร 80

18

12

8

LH

LH

LH

Unbalanced (left of Left)

After inserting 4 After rotation

4

12

EH

EH

EH

20

12

8

8

EH

LH

EH

4 12

EH EH

EH

18

Rotate right

Page 81: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

กรณท 2 : Right of Right (1) การหมนโหนดทไมสมดลไปทางซาย (แบบงาย)

โครงสรางขอมล บทท 6 ทร 81

20

18

12

EH

RH

RH

Unbalanced (Right of Right)

After inserting 20

20

18

12

EH

EH

EH

After rotation

Rotate left

Page 82: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

กรณท 2 : Right of Right (2) การหมนโหนดทไมสมดลไปทางซาย (แบบซบซอนยงขน)

โครงสรางขอมล บทท 6 ทร 82

14

12

18

RH

EH

RH

After inserting 44 After rotation

44

23

EH

EH

RH

20

20

14

18

EH

EH

EH

12 44

EH EH

RH

23

Rotate left

Unbalanced (Right of Right)

Page 83: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

กรณท 3 : Right of Left (1) การหมนโหนดหนงไปทางซาย และหมนอกโหนดหนงไปทางขวา (แบบงาย)

โครงสรางขอมล บทท 6 ทร 83

12

4

8

EH

RH

LH

12

8

4

EH

EH

EH

First Rotate left

12

8

4

EH

LH

LH

Second Rotate Right

Page 84: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

กรณท 3 : Right of Right (2) การหมนโหนดหนงไปทางซาย และหมนอกโหนดหนงไปทางขวา(แบบซบซอนยงขน)

โครงสรางขอมล บทท 6 ทร 84

23

18

12

EH

LH

LH

Original tree After left rotation

14

52

EH

EH

RH

44

20

4

16

RH

RH

EH

First Rotate 12 left

23

18

14

EH

LH

LH

16

52

EH

LH

RH

44

20

12

4

LH

EH

EH

Second Rotate 18 right

Page 85: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

กรณท 3 : Right of Right (3) การหมนโหนดทไมสมดลไปทางซาย (แบบซบซอนยงขน)

โครงสรางขอมล บทท 6 ทร 85

After Right rotation

23

18

14

EH

EH

LH

16

52

EH

LH

RH

44

20

12

4

EH

EH

EH

Page 86: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

กรณท 4 : Left of Right (1) การหมนโหนดหนงไปทางขวา และหมนอกโหนดหนงไปทางซาย (แบบงาย)

โครงสรางขอมล บทท 6 ทร 86

12

44

18

EH

LH

RH

44

18

12

EH

EH

EH

Second Rotate left 12

18

44

EH

RH

RH

First Rotate Right

Page 87: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

กรณท 4 : Right of Right (2) การหมนโหนดหนงไปทางขวา และหมนอกโหนดหนงไปทางซาย(แบบซบซอนยงขน)

โครงสรางขอมล บทท 6 ทร 87

18

12

EH

EH

RH

Original tree After Right rotation

52

LH

LH

44

23

20

EH

First Rotate Right 18

12

RH

EH

RH

20 44

EH

RH

23

52

EH

Second Rotate left

Page 88: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

กรณท 4 : Right of Right (3) การหมนโหนดหนงไปทางขวา และหมนอกโหนดหนงไปทางซาย(แบบซบซอนยงขน)

โครงสรางขอมล บทท 6 ทร 88

After left rotation

23

18

EH

EH

EH

12 20

EH

RH

44

52

EH

Page 89: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ฮพ (Heaps) (1) โครงสรางทรแบบฮพ คอ

ไบนารทรทซบทรดานซาย และ ซบทรดานขวาจะมคานอยกวา (หรอเทากบ) โหนดพอ

รทโหนดของฮพทรจะรบประกนวามคามากทสดในทร

คณสมบต เปนไบนารทรแบบสมบรณหรอเกอบสมบรณ

คยของโหนดพอจะตองงมคามากกวาหรอเทากบคยโหนดลก (Max-Heaps)

โครงสรางขอมล บทท 6 ทร 89

K <= K

K

K <= K

Page 90: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ฮพ (Heaps) (2)

โครงสรางขอมล บทท 6 ทร 90

12

12

24

8 18

44

23

6 10

Page 91: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ฮพ (Heaps) (3)

โครงสรางขอมล บทท 6 ทร 91

24

12

24

8

18

24

44

6 10

12

8

10

44

24

6 18

ฮพทไมตรงคณสมบต

Page 92: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

ฮพ (Heaps) (4)

โครงสรางขอมล บทท 6 ทร 92

56

78

32

45 8

การแทนโครงสรางฮพในหนวยความจ า

23 19

78 56 32 45 8 23 19

Page 93: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การสรางฮพ (1) Reheap Up (1)

สลบ Node กบ Parent จนกกวาจะถกต าแหนง ปรบล าดบ ดวยการน าสมาชกล าดบทายใหลอยขนไปยงทรจนกระทงอยในต าแหนง

เหมาะสมตรงตามคณสมบตของฮพ

โครงสรางขอมล บทท 6 ทร 93

Page 94: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การสรางฮพ (2) Reheap Up (2)

โครงสรางขอมล บทท 6 ทร 94

21

42

32

16 12 20 30

13 15 10 25

Original tree : not a heap

Page 95: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การสรางฮพ (3) Reheap Up (3)

โครงสรางขอมล บทท 6 ทร 95

21

42

32

16 25 20 30

13 15 10 12

Last element (25): move up

Page 96: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การสรางฮพ (4) Reheap Up (4)

โครงสรางขอมล บทท 6 ทร 96

25

42

32

16 21 20 30

13 15 10 12

Move up again : tree is a heap

Page 97: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การสรางฮพ (5) Reheap Down (1)

สลบ Node กบ Child ทมคามากกวา ปรบล าดบ ดวยการดนโหนดทเปนรทลงต าไปในฮพจนกระทงอยในต าแหนงทเหมาะสม

ตรงตามคณสมบตของฮพ

โครงสรางขอมล บทท 6 ทร 97

Page 98: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การสรางฮพ (6) Reheap Down (2)

โครงสรางขอมล บทท 6 ทร 98

21

10

32

16 12 20 30

13 15

Original tree : not a heap

Page 99: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การสรางฮพ (7) Reheap Down (3)

โครงสรางขอมล บทท 6 ทร 99

21

32

10

16 12 20 30

13 15

Root moved down (right)

Page 100: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การสรางฮพ (8) Reheap Down (4)

โครงสรางขอมล บทท 6 ทร 100

21

32

30

16 12 20 10

13 15

Moved down again : tree is a heap

Page 101: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การสรางฮพ (9) Ex การสรางฮพทเรมตนจากทรวางเปลา และมการแทรกขอมลตามล าดบ

30, 35, 5, 50, 64, 80, 24, 51

โครงสรางขอมล บทท 6 ทร 101

30

Insert 30

30

Insert 35

35

35

30

35

30 5

Insert 5

Page 102: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การสรางฮพ (10) Ex การสรางฮพทเรมตนจากทรวางเปลา และมการแทรกขอมลตามล าดบ

30, 35, 5, 50, 64, 80, 24, 51

โครงสรางขอมล บทท 6 ทร 102

Insert 50

35

30 5

50

35

50 5

30

50

35 5

30

Page 103: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การสรางฮพ (11) Ex การสรางฮพทเรมตนจากทรวางเปลา และมการแทรกขอมลตามล าดบ

30, 35, 5, 50, 64, 80, 24, 51

โครงสรางขอมล บทท 6 ทร 103

Insert 64

50

35 5

30 64

50

64 5

30 35

64

50 5

30 35

Page 104: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การสรางฮพ (12) Ex การสรางฮพทเรมตนจากทรวางเปลา และมการแทรกขอมลตามล าดบ

30, 35, 5, 50, 64, 80, 24, 51

โครงสรางขอมล บทท 6 ทร 104

Insert 80

64

50 5

30 35 80

64

50 80

30 35 5

80

50 64

30 35 5

Page 105: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การสรางฮพ (12) Ex การสรางฮพทเรมตนจากทรวางเปลา และมการแทรกขอมลตามล าดบ

30, 35, 5, 50, 64, 80, 24, 51

โครงสรางขอมล บทท 6 ทร 105

Insert 24

80

50 64

30 35 5 24

Insert 51

80

50 64

30 35 5 24

51

Page 106: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การสรางฮพ (12) Ex การสรางฮพทเรมตนจากทรวางเปลา และมการแทรกขอมลตามล าดบ

30, 35, 5, 50, 64, 80, 24, 51

โครงสรางขอมล บทท 6 ทร 106

Insert 51

80

50 64

51 35 5 24

30

80

51 64

50 35 5 24

30

Page 107: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การลบฮพ (1) การลบโหนดภายในฮพ จะตองมการปรบปรงโครงสรางทรใหม (Restructure)

เพอใหคงคณสมบตของฮพทร

โครงสรางขอมล บทท 6 ทร 107

80

51 64

50 35 5 24

30

80 51 64 50 35 5 24 30

Heap

To be deleted

Page 108: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

การลบฮพ (2)

โครงสรางขอมล บทท 6 ทร 108

51

50 64

30 35 5 24

51 50 64 30 35 5 24

Heap

Page 109: ทรี (Trees) - WordPress.com · 2011-11-01 · รูปแบบการนาเสนอโครงสร้างข้อมูลทรี (Tree Representation) (2) 2.แบบย่อหน้า

อางอง โอภาส เอยมสรวงศ

โครงสรางขอมล (Data Structures) เพอการออกแบบโปรแกรมคอมพวเตอร.—กรงเทพฯ : ซเอดยเคชน, 2549.

โครงสรางขอมล บทท 7 กราฟ 109