โครงสร้างข้อมูลแบบต้นไม้ (tree)

44
โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ โโโโโโ โโโโโโ (TREE) (TREE)

Upload: jenski

Post on 19-Mar-2016

64 views

Category:

Documents


3 download

DESCRIPTION

โครงสร้างข้อมูลแบบต้นไม้ (Tree). Tree. หมายถึง โครงสร้างข้อมูลที่ออกแบบมาให้มีลักษณะไม่เป็นเชิงเส้น มีการจัดเก็บข้อมูลเชื่อมโยงกันเป็นระดับชั้น โดยเริ่มจากโหนดแรกที่อยู่บนสุดเรียกว่า Root Node เชื่อมโยงไปยังโหนดระดับรองลงไป แต่ละระดับก็มีการเชื่อมโยงโหนดระดับต่อไป ซึ่งเรียกว่า Subtree. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

โครงสรางขอมลแบบตนไมโครงสรางขอมลแบบตนไม(TREE)(TREE)

Page 2: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

Tree• หมายถง โครงสรางขอมลทออกแบบมาใหมลกษณะไมเปนเชงเสน มการจดเกบขอมลเชอมโยงกนเปนระดบชน โดยเรมจากโหนดแรกทอยบนสดเรยกวา Root Node เชอมโยงไปยงโหนดระดบรองลงไป แตละระดบกมการเชอมโยงโหนดระดบตอไป ซงเรยกวา Subtree

Page 3: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

นยามของโครงสรางตนไม• โครงสรางขอมลแบบตนไม มคณสมบตดงน 1. มโหนดทเรยกวา รากหรอรต (Root node) , R 2. โหนดทไมใชรตแบงยอยออกเปน n กลม โดยทแตละกลมไมมโหนด รวมกนเลย เชน กลม T1 , T2 ,…..Tn (n >=0) แตละกลมกเปนตนไมเหมอน

กน จะเรยกวาตนไมยอย (Subtree)

Page 4: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

ลกษณะของทร

จากรป R เปนรทของตนไมยอย A,B,C,D A เปนรทของตนไมยอย E,F,G F เปนรทของตนไมยอย J B เปนรทของตนไมยอย H และ I

Page 5: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

ชอสวนตางๆของตนไม

Page 6: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

ระดบของโหนด (Level)

• ระดบของโหนดหนง ๆ แสดงถงหนวยระยะทางตามแนวดงของโหนดนนวาอยหางจากรตโหนดเทาไร ถากำาหนดวารตโหนดของตนไมนนอยทระดบ 1 และกงทกกงมความยาวเทากน หมดคอยาว 1 หนวย เลขระดบของโหนดใด ๆ คอจำานวนกงทนอยทสดจากรตโหนดบวกหนงเชน F มเลขระดบเปน 4 เปนตน

Page 7: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

ดกรของโหนด (Level Degree)

•ดกรของโหนด คอ จำานวนตนไมยอยของโหนดนน จากรป โหนด X มดกร 1 โหนด A มดกร 2 สวนโหนด H มดกร 3 โหนด B มดกร 1 และโหนด E มดกร 0 เปนตน

Page 8: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

โหนดทเปนใบ (Leaf Node)

• โหนดทเปนใบ หมายถงโหนดทมดกรเปน 0 เชนโหนด C, D, E, J, F และ G สวนโหนดทมดกรไมเทากบ 0 เรยกวา โหนดภายใน หรอ interior node หรอ branch node

Page 9: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

Immediate Successor หรอ SON ของโหนด i• Immediate Successor คอโหนดทงหลายของตนไมยอย i ทม

คาระดบตำากวาโหนด i อยหนง เชน SON ของโหนด H คอโหนด E, I, และ F

Page 10: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

Immediate Predecessor หรอ father ของโหนด i• Immediate Predecessor คอโหนดทมคาระดบสงกวาโหนด i อยหนง เชน FATHER ของโหนด J คอโหนด I, FATHER ของโหนด I คอโหนด H เปนตน

Page 11: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

โครงสรางตนไม (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

Page 12: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

โครงสรางตนไม (Tree Structure)R

B XA

DC H Y

GIELeaf Nodes

Root Nodes

LevelLevel แสดงถงหนวยระยะทางตามแนวดงของโหนดวาอยหางจาก Root Node เปนระยะเทาไรและทกกงมความยาวเทากนคอ 1 หนวย

Level 0

Level 1

Level 2

Level 3

Page 13: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

โครงสรางตนไม (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

Page 14: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

โครงสรางตนไม (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

Page 15: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

โครงสรางตนไม (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

Page 16: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

ตนไมแบบไบนาร (BinaryTree)• ตนไมไบนารเปน rooted binary tree ทวางเปลา หรอประกอบดวยรตโหนดและตนไมไบนาร 2 กลมทไมมโหนดรวมกน แตละกลมจะมชอเรยก (โดยตำาแหนงทอยหรอทเขยน ) วาตนไมยอยทางซาย (left subtree) และตนไมยอยทางขวา (ri

ght subtree) ตามลำาดบคำาวา วางเปลา ในนยามหมายความวา ตนไมไบนารตนนนมแตรตโหนดเพยงโหนดเดยวเทานน

Page 17: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

A

B C

D E F G

CV G

D

S

F

X(ก)

(ข)(ค)

รป (ก ), (ข ) และ (ค ) เปนตนไมไบนาร

Page 18: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

(ง) (จ) (ฉ)รป (ง ), (จ ) และ (ฉ)ไมใชตนไมไบนาร

Page 19: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

ตนไมไบนารแบบสมบรณ (Complete Binary Tree)• ตนไมไบนารแบบสมบรณ หมายถงตนไมไบนารท

แตละโหนดภายในมโหนดยอยซายและขวา (นนคอแตละโหนดภายในม left son และ right so

n ) และโหนดใบ (leaf nodes) ทงหลายอยในระดบท n รป (ก ) เปนตนไมไบนารแบบสมบรณทม 3 ระดบ

D

K R

W O U M

(ก)

Page 20: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

• ตนไมไบนารแบบสมบรณทมโหนดใบอยทระดบ n จะมโหนดทงหมดเทากบ 2n-1

W

D V

S A Q N

จากรป จำานวนโหนดเทากบ 23-1 = 7 โหนด

Page 21: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

การแทนตนไมไบนารในหนวยความจำา• ตนไมไบนารสามารถแทนได 2 แบบ คอ 1. การแทนโดยอาศยพอยนเตอร

2. การแทนโดยอาศยแอดเดรสของโหนด หรอการแทนแบบ ซเควนเชยล

(sequential)

Page 22: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

การแทนโดยอาศยพอยนเตอร

• ทำาไดโดยใหแตละโหนดมโครงสรางดงรปตอไปน

DATA LLINK RLINK

DATA LSON RSONหรอ

โครงสรางโหนดสำาหรบตนไมไบนาร

LLINK หรอ LSON เปนพอยนเตอรชไปยงตนไมยอยทางซาย สวน RLINK หรอ RSON เปนพอยนเตอรชไปยงตนไมยอยทางขวา

Page 23: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

การแทนโดยอาศยแอดเดรสของโหนด หรอการแทนแบบซเควนเชยล• เปนการแทนตนไมไบนารดวยอารเรย 1 มตอารเรยเดยว การแทนแบบนเหมาะกบโครงสรางตนไมไบนารแบบ complete binary tree ทสด การแทนจะเรมตนดวยการใหหมายเลขแกแตละโหนด ตงแตระดบ 1 ระดบ 2 ...ไปเรอยๆ จนถงระดบ k การใหตวเลขในแตละระดบจะใหจากซายไปขวา โดยใหรตโหนดมหมายเลข 1 เสมอ การใหตวเลขจะตองถอวาตนไมไบนารเปนตนไมไบนารแบบสมบรณ จงจะใหตวเลขทอยแกโหนดได

Page 24: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

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

Page 25: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

Data07 Tree(25)

การเปลยน Tree ใหเปน Binary Tree

ตนไมแบบออดนาร(ordinary) คอตนไมทมดกรสงสดของแตละโหนดเปนเทาไรกได ซงการเปลยนใหเปน binary tree เปนการจดใหแตละโหนดมดกรสงสดเทากบสอง มขนตอนดงน

1. พจารณาทกงทางซายสดทอยใตพอเดยวกน

2. ตอกงของโหนดทางซายสดในขนท 1 ไปทางขวาตามลำาดบอาวโสกบพนองทเกดจากพอเดยวกน

3. ทำาขนท 1 และ 2 จนครบทกโหนด4. ปรบมมของแตละกง ประมาณ 45 องศา

Page 26: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

Data07 Tree(26)

การเปลยน Tree ใหเปน Binary Tree

ขนท 1

ขนท 2

ขนท 3

ขนท 4

Page 27: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

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

ผลลพธ

Page 28: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

การทองตนไม (Tree Traversal)Tree TraversalTree Traversal หมายถงการไปยงโหนดเพอประมวลผลบางอยางทตองการกระทำากบโหนดนน เชน หาขาวสาร

แบงออกเปน 3 วธ (ทนยมใช) 1 Pre-Order Traversal (RTLTR)

2. In-Order Traversal (TLRTR)

3. Post-Order Traversal (TLTRR)

Page 29: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

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)

Page 30: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

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

Page 31: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

การทองตนไมไบนาร (Binary Tree Traversal)

Y

R

XA

DC

G

แบบ Pre-Order Traversalstart

R

ResultResult

A C D X Y G

stop

Page 32: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

การทองตนไมไบนาร (Binary Tree Traversal)

Y

R

XA

DC

G

แบบ In-Order Traversalstart

C

ResultResult

A D R G Y X

stop

Page 33: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

การทองตนไมไบนาร (Binary Tree Traversal)

Y

R

XA

DC

G

แบบ Post-Order Traversalstart

C

ResultResult

D A G Y X R

stop

Page 34: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

AB C

D

G

E F

H I

Pre-order : Pre-order : ABDGCEHIFABDGCEHIFIn-orderIn-order : : DGBAHEICF DGBAHEICFPost- order :Post- order : GDBHIEFCAGDBHIEFCA

Page 35: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

+A -

* D

B C

จงทองเขาไปในตนไม แบบ

1.Pre-order 2.In-order 3.Post-order

EX1

Page 36: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

Expression Tree

จากรปแสดง Expression tree ของ (a + b * c) + ((d * e + f ) * g)

เปนตนไมแบบไบนารท โหนดใบคอ operands, เชนคาคงทหรอตวแปร, และโหนดรากคอ operators

Page 37: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

Data07 Tree(37)

คอตนไมทสรางขนจากตวกระทำา(operand) และเครองหมาย(operators) ทางคณตศาสตรของนพจน โดยการวางตวกระทำาทโหนดใบ(leave node) และวางเครองหมายไวทโหนดภายใน สำาหรบเครองหมายทเปนเครองหมายเดยว(unary operator) จะมกงตนไมยอยเพยงขางเดยว เรามกจะวาง เครองหมายเดยวไวทางซายของตวกระทำา ซงเครองหมายทจดเปนเครองหมายเดยว ไดแก - log() cos() และมเครองหมายเดยว ทถกจดวางไวทางขวาของตวกระทำา ไดแก แฟกทอเรยลฟงกชน เลขยกกำาลงตางๆ

ตวอยาง แสดงการสราง เอกเพรสชนทรแบบทวภาค จากนพจน X * Y + Z

Expression Tree

+

* Z

X Y

Page 38: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

Data07 Tree(38)

ตวอยาง แสดงการสรางเอกเพรสชนทรจากนพจน (X – ((Y / R) * D))

จะไดวา • การเยยมโหนด แบบอนออเดอรจะได X-Y/R*D ซงอยในรปอนฟกฟอรม• การเยยมโหนด แบบพรออเดอรจะได -X*/YRD ซงอยในรปพรฟกฟอรม• การเยยมโหนด แบบโพสออเดอร จะได XYR/D*- ซงอยในรปโพสฟกฟอรม

Expression Tree

-

X *

/ D

Y R

Page 39: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

การสราง Expression Tree• อานสญลกษณจากนพจนทละตว ถาตวทอานมาเปน operand ใหสรางโหนดของ tree หนงโหนดแลว push มนลงใน stack ถาตวทอานมาเปน operator ให pop จาก stack 2 ครง ซงจะได trees T1 และ T2 (T1 นำาออกกอน) แลวใหนำามาสรางเปน tree ใหมทมราก (root ) เปนตว operator และม left และ right children เปน T2 และ T1 ตามลำาดบ จากนนใหใส tree ใหมนกลบลง stack

Page 40: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

• ถาอนพต คอ a b + c d e + * *1

2

3

Page 41: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

4

5

• ถาอนพต คอ a b + c d e + * *

Page 42: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

6

7

• ถาอนพต คอ a b + c d e + * *

Page 43: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

แบบฝกหด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

Page 44: โครงสร้างข้อมูลแบบต้นไม้ (Tree)

• 3. จงแปลงทรใหเปนไบนารทร

แบบฝกหด

A

B H

F G I J

K M

C

D E