cs321 : data structure / algorithm analysismathcom.uru.ac.th/~beebrain/slide/4122303a/tree.pdf ·...

93
โครงสร้างข้อมูลแบบทรี (Tree)

Upload: others

Post on 19-Jan-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

โครงสร้างข้อมูลแบบทรี (Tree)

Page 2: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Tree

• โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน ๆ จะพบว่า ข้อมูลแต่ละตัวมีความสัมพันธใ์นรูปเชิงเส้น หรือแบบเชิง 1 มิติ

• โครงสร้างข้อมูลแบบไม่เชิงเส้น ซึ่งสามารถแสดงถึงความสัมพันธ์ที่ซับซ้อนกว่า และโครงสร้างขอ้มูลแบบไม่เชิงเส้นที่ส าคัญที่สุดคือ Tree เป็นความสัมพันธ์ระหว่าง node ที่เป็นล าดับชั้นลดหลั่นกัน( Hierarchical Relationship )

2

Page 3: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Tree

• รูปแบบของ tree ถูกน ามาประยุกต์ในหลาย ๆ ด้านเพื่อใช้ ในการแสดงความสัมพันธ์ระหว่างข้อมูล

ตัวอย่างการใช้ tree1 เพื่อใชใ้นการแสดงความสัมพันธ์ของ

ครอบครัว

2. แสดงแผนผังการจัดบุคคลในบริษัท โดยจัดล าดับตามต าแหน่ง

3. การจดัท าสารบัญหนังสือในแบบโครงสร้างของ tree

3

Page 4: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Tree

4

Page 5: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

นิยามของ Tree

1. ในเชิง Math มีลักษณะเปน็รีเคอร์ซีฟ

2. Tree เป็น set จ ากดั T ที่มีสมาชิก 1 Node หรือ มากกว่า ซึ่งมี node พิเศษ 1 node เรียก Root

3. Node อื่นๆ ทีเ่หลือจะถกูแบ่งออกเป็นกลุ่มทีไ่มม่ีสมาชิกรว่มกัน

สมมุติชื่อคือ T1 ,, T2 ,… Tn ( n >= 0 )โดยมีโครงสร้างเป็น ต้นไม้ย่อย เรียก Subtree เมื่อ n คือจ านวนกลุ่มต้นไม้ย่อย

5

Page 6: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

นิยามของ Tree

6

V0 เป็น root ของ Tree ที่มีสมาชิกคือ{ V1 , V2 , V3 , V4 , V5 , V6 , V7 }

ต้นไม้ย่อย T1

ต้นไม้ย่อย T2

Page 7: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

นิยามของ Tree

7

V1 เป็น root ของ Tree ที่มีสมาชิกคือ { V3 , V4 }

ต้นไม้ย่อย T1ต้นไม้ย่อย

T2

Page 8: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

นิยามของ Tree

8

V2 เป็น root ของ Tree ที่มีสมาชิกคือ

Page 9: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

นิยามของ Tree

ความสัมพันธ์ ระหว่าง Root node กับ Sub Tree เป็นลักษณะ พ่อ กับลูก (Parent and child )

• พ่อ (Father) คือ node ที่เป็น root ของ Tree หรือroot ของ Subtree

• ลูก (child ) คือ node ที่เชื่อมโยงต่อจาก node ที่เป็นพ่อ

9

Page 10: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

นิยามของ Tree

10

A

B D

E F GT

C

H

พ่อ (Father)

ลูก(child )พ่อ (Father)

ลูก(child )

Page 11: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

ค าศัพท์ส าหรับ Tree

1. Brother Node : Node ที่มีพ่อแม่เดียวกัน

2. Branch / Edge ( เอดจ์) : กิ่งเป็นเส้นเชื่อม ระหว่างพ่อกับลูก

3. Degree : จ านวนลูก หรอื ต้นไม้ย่อยของแต่ละ node

4. Leaf node : (ลีฟโหนด) คือ Node ที่ไม่มีลกู Degree = 0

5. Branch Node : Node ที่ไม่ใช่ Root , Leaf Degreeไม่เป็น 0

11

Page 12: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

12

1. Brother Node : Node ที่มีพ่อเดียวกัน2. Branch / Edge : กิ่งเป็นเส้นเชื่อม ระหว่างพ่อกับลูก

A

B D

E F GT

C

H Leaf Node

Brother Node = {BCD} {EF} {HT}

Branch Node

Branch/Edge

ค าศัพท์ส าหรับ Tree

Page 13: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

13

A

B D

E F GT

C

HLeaf Node

4. Leaf node (ลีฟโหนด) คือ Node ที่ไม่มีลูก Degree = 05. Branch Node Node ที่ไม่ใช่ Root , Leaf Degreeไม่เป็น 0

Degree : จ านวนลูก หรอื ต้นไม้ย่อยของแต่ละ node

3

2 1 2

ค าศัพท์ส าหรับ Tree

Page 14: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

14

A

B D

E F G T

C

H

Descendant ของ A

5. Descendant ลูกหลาน / Successor ผู้มาทีหลังDescendant ของ node x คือ ทุก node ที่ link ต่อ x ลงมาทั้งหมด

ค าศัพท์ส าหรับ Tree

Page 15: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

15

Direct Descendant ของA

Immediate Successor / Direct Descendant/ Son ลูกหลานโดยตรง

A

B D

E F G T

C

H

ค าศัพท์ส าหรับ Tree

Page 16: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

16

A

B D

E F G T

C

H

B และ A คือ Ancestor ของ E และ F

6. Ancestor บรรพบุรุษ / Predecessor ผู้มาก่อน Ancestor ของ node x คือ ทุก node ที่ Link อยูเ่หนือ x

ค าศัพท์ส าหรับ Tree

Page 17: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

17

A

B D

E F G T

C

H

B คือ Father ของ E และ F

7. Immediate Predecessor / Direct Ancestor / Father

ค าศัพท์ส าหรับ Tree

Page 18: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

ค าศัพท์ส าหรับ Tree

8 . Level ของ node (ระดบั)

- ระยะทางตามแนวดิ่งของ node ว่าอยู่ห่างจาก root เท่าไร

- เป็นหมายเลขแสดงระดับของ node ในต้นไม้

- ถ้า node มีระดับ L

-> node ที่เชื่อมต่อจากมันมีระดับ L+1

9. Height หรือ ระดับ( Level )ที่สูงสุดของ tree 18

Page 19: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

19

A

B D

E F G T

C

H

Level : 1 . . . . . . . . . . . . . .

Level : 2 . . .

Level : 3

Height : 3ค าศัพท์ส าหรับ Tree

Page 20: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

20

A

B D

E F G T

C

H

Level : 0 . . . . . . . . . . . . . .

Level : 1. . .

Level : 2

Height : 3หนังสือบางเล่ม

ค าศัพท์ส าหรับ Tree

Page 21: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

21

R

TS

U V WX

Y Z

RootLevel 1

Level ….

Level …

Level …..

Subtree ของ node …….

Son of ….

Father of ….

Ancestors of …….

Descendant of …..

Height of a tree = ……………………...

Brother node of …….

ค าศัพท์ส าหรับ Tree

Page 22: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

22

Notation: Node, children, edge, parent, ancestor, descendant, path, depth,

height, level, leaf node, subtree.

R

TS

U V WX

Y Z

Root

Internal node

Leaf

Level 1

Level 2

Level 3

Level 4 SubtreeSon of T

Father of V

Ancestors of V

Descendant of T

Height of a tree = 1+ max(depth of a node) = 4

Brother node of U

depth of a node = จ านวน ของ edge จาก root - node

ค าศัพท์ส าหรับ Tree

Page 23: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

23

R

TS

U V WX

Y Z

9. ปา่ (Forest)

TS

U V WX

Y Z

ค าศัพท์ส าหรับ Tree

Page 24: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Ordered Tree (ออรเ์ดอร์ทร)ี หรือ ต้นไมท้ีม่ีแบบ

แผน

• Tree ที่ node ใด ๆ มี subtree หรือ degree ตั้งแต่ 2

ขึ้นไป

• โหนดต่าง ๆ ของต้นไม้นั้นมีความสัมพันธ์ที่แน่นอนประการหนึ่ง เช่น

ก่อน , ไปทางขวา , ไปทางซ้าย

• ถา้ไมม่ีความสัมพนัธ์ที่แน่นอน เราเรียกวา่

Ordted tree 24

Ordered Tree

Page 25: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

25

A

B C

D

I J

A

B

D

F E

C

Ordered Tree

Ordered Tree

Page 26: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

ตัวอย่างโครงสร้างทรี

• นิพจนท์างคณิตศาสตร์

• Decision Trees

• การแยกประเภทหนังสือในห้องสมุด

26

Tree

Page 27: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

เราสามารถใช้โครงสร้างของ Tree ในการแทนนิพจน์ทางคณิตศาสตร์

โดยจัดให้

1. node สาขา (Branch node) เป็น node ส าหรับเครื่องหมายการค านวณ

2. ส่วน node ปลาย (Leaf node) เป็น node ส าหรับตัวถูกกระท าของเครื่องหมายการค านวณน้ัน ๆ

27

นิพจน์ทางคณิตศาสตร์

Page 28: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

28

V1 * V2 – (V3 + V4 ^ V5 )

Tree

Page 29: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

• Tree ชนิดนี้มักเกิดขึ้นในการประยุกต์เกี่ยวกับการเล่นเกม

หรืองานเกี่ยวกับการสร้างแบบจ าลองเหตุการณ์

ตัวอย่างการน าไปใช้ในการเล่นเกม โดยแตล่ะ node

ของ tree จะใช้แทนการตัดสินใจว่าจะเล่นต่อไปอย่างไร

tree ที่ใช้แทนการเล่นเกมน้ีเรียก ทรีเกม ( Game Tree )

ซึ่งขนาดของ ทรีเกม มักจะมีขนาดใหญ่

29

Decision Trees

Page 30: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

30

Decision Trees

Page 31: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

• ระบบการจดัท า Catalog ของห้องสมดุ ส่วนใหญ่จะใช้

โครงสรา้งของทรี

เช่นตัวอย่างระบบดวิวี่ ( Dewey Decimal System )

ซึ่งจะจัดเปน็ระบบลดหลั่นลงมา โดยเริ่มจากความรู้กว้าง ๆ

ก่อน แล้วแยกออกเป็นแผนกย่อยตามสาขาวชิาที่ละเอียดขึ้น

หรือลักษณะการจดัท าสารบัญหนังสือ ที่มีการจัดท าเป็น

หัวข้อเรื่องใหญ่ และมหีัวข้อย่อยในแต่ละเรื่อง เป็นต้น

31

การแยกประเภทหนังสือในห้องสมุด

Page 32: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

32

การแทนโครงสร้างต้นไม้ในคอมพิวเตอร์

Page 33: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Array Implementation

33

Linked Lists Implementation

Page 34: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

34

Binary Tree(ต้นไม้ทวิภาค)

Page 35: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

• ในแต่ละ node จะมี subtree หรือ degree ได้ไม่เกิน 2

• ถ้ามี subtree เดียว ต้องระบุดว้ยว่า เป็น node ทางซา้ย

หรือทางขวา ของ Root

35

T = NULL

Binary Tree

Page 36: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

มองในเชิง Math ค าจ ากัดความของ Binary tree จะเป็นrecursive

• เป็น set จ ากดัของ node ที่อาจเป็น set ว่าง หรือประกอบด้วยnode ที่เรียก Root และ node ที่เหลือแบง่ออกเปน็ subtree ที่ไม่มี node ร่วมกัน โดย subtree กจ็ะเป็น binary tree ด้วย

• Left และ Right Subtree

36

T = NULL

Binary Tree

Page 37: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Binary Tree Example

37

Max depth = 3

Height = 4Right sonLeft son

Binary Tree

Page 38: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Complete Binary Trees

38

15

165

ความสัมพันธ์ระหว่างระดับและจ านวน node

n = 2l -1 เมื่อ l คือ max level

Binary Tree

3 12 201

Page 39: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Array Implementation

39

----10--8--6--4--2--Right Sibling

--9--7--5--3--1----Left Sibling

--------------108642Right Child

------------1197531Left Child

54433221100--Parent

11109876543210Position

Binary Tree

Page 40: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Linked List Implementation

40

DATA

RsonLson

Binary Tree

Page 41: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

41

การแปลง Treeไปเป็น Binary Tree

Page 42: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

การแปลง tree ไปเป็น binary tree • โครงสร้าง Tree มักมี degree > 2

• ดังนั้นการสร้างจึงต้องก าหนด เขตเชื่อมโยงให้พอ

• บาง node ใชค้รบ บาง node ไม่ครบ

42

การแปลง Tree ไปเป็น Binary Tree

Page 43: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

43

R

TS

U V WX

Y Z

การแปลง Tree ไปเป็น Binary Tree

Page 44: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

ขั้นตอน

1. ให้เช่ือม node ที่มีพ่อเดียวกัน ( node พี่น้อง) เข้าด้วยกัน

- ลบเส้นเชื่อมโยงจาก node ที่เป็นพ่อไปยังลูก ๆ ออกให้หมด

ยกเว้น ลูกที่อยู่ต าแหน่งซ้ายสุด

2. เลือก son ทางซ้ายและขวา ของแต่ละ node

- son ทางซ้าย คือ node ทีอ่ยู่ใต้ node นั้น

- son ทางขวา คือ node ที่อยู่ข้าง ๆ (ระดบัเดียวกัน / Brother )

44

การแปลง Tree ไปเป็น Binary Tree

Page 45: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

45

เริ่มต้น A

B D

E F G T

C

H

1.ให้เชื่อม node ที่มีพ่อเดียวกัน ( node พี่น้อง) เข้าด้วยกัน

การแปลง Tree ไปเป็น Binary Tree

Page 46: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

46

A

B D

F G T

C

H

ขั้นที่ 1

E

1.ให้เชื่อม node ที่มีพ่อเดียวกัน ( node พี่น้อง) เข้าด้วยกัน

การแปลง Tree ไปเป็น Binary Tree

Page 47: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

47

A

B D

F G T

C

HE

1. ลบเส้นเชื่อมโยงจาก node ที่เป็นพ่อไปยัง ลูก ๆ ออกให้หมด ยกเว้น ลูกที่อยู่ต าแหน่งซ้ายสุด

ขั้นที่ 1-1

การแปลง Tree ไปเป็น Binary Tree

Page 48: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

48

A

B

D

FG

T

C

H

Eเลือก son ทางซ้ายและขวา ของแต่ละ node

- son ทางซ้าย คือ node ทีอ่ยู่ใต้ node นัน้ - son ทางขวา คือ node ทีอ่ยู่ข้าง ๆ

(ระดับเดียวกัน / Brother )

ขั้นที่ 2

การแปลง Tree ไปเป็น Binary Tree

Page 49: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

แบบฝึกหัด

49

จงแปลง Tree ให้เป็น Binary Tree

1

2

6

10

7

3 4 5

8 9

A

C

G

B

ED F

J K L M

CB

A

D

Page 50: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

การแปลง Forest ไปเป็น binary tree

• ท าแบบเดียวกนักับ การแปลง tree ไปเป็น binary tree

• คือ เชื่อม Root เข้าด้วยกัน และท าในส่วนของ Subtree ด้วย

50

การแปลง Forest ไปเป็น Binary Tree

Page 51: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

51

A

B

D

C

เริ่มต้น

E

GF H

J K

การแปลง Forest ไปเป็น Binary Tree

Page 52: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

52

A

B

D

C

Step 1

E

GF H

J K

การแปลง Forest ไปเป็น Binary Tree

Page 53: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

53

A

B

D

C

E

GF

HJ

KStep 2

การแปลง Forest ไปเป็น Binary Tree

Page 54: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

54

Binary Search Tree

Page 55: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

55

ต าแหน่งของการเอา node เข้าไปไว้ใน tree จะขึ้นกับข้อมูลที่เก็บในแต่ละ Node และลักษณะ Tree

*** ไม่สามารถก าหนด ต าแหน่งได้65

40 75

70 9530 55

35 80

โดยโครงสร้างของทรีแบบนี้ คือค่า key หลักในโหนดใด ๆ จะต้อง1. มากกว่าค่า key ของ node

ที่อยู่ทางซ้าย2. และน้อยกว่าค่า key ของ node

ที่อยู่ทางขวา

Binary Search Tree

Page 56: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

56

โดยโครงสร้างของทรีแบบนี้ คือ ค่าkey หลักในโหนดใด ๆ จะต้อง1. มากกว่าค่า key ของโหนดที่อยู่ทางซ้าย2. และน้อยกว่าค่า key ของโหนดที่อยู่ทางขวา

65

40 75

70 9530 55

35 80

Binary Search Tree

Page 57: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

57

โดยโครงสร้างของทรีแบบนี้ คือ ค่าkey หลักในโหนดใด ๆ จะต้อง1. มากกว่าค่า key ของโหนดที่อยู่ทางซ้าย2. และน้อยกว่าค่า key ของโหนดที่อยู่ทางขวา

65

40 75

70 9530 55

35 80

Binary Search Tree

Page 58: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

58

Ken , 45

Jim , 35 Mandy , 15

Bobby , 60 Jone , 40 Patty , 60

John , 20

คีย์หลักคือชื่อหรืออายุ ?

Binary Search Tree

Page 59: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

59

การสร้าง Binary Search Tree

- การสร้างจะ เป็นการ Add สมาชิก 1 ตัว ( node ) เข้าไปใน Tree

- เริ่มหาที่ Root เสมอ และท่องไปตาม node ต่าง ๆ ตามล าดับ เพื่อ

หาต าแหน่งที่เหมาะสมส าหรับ node ใหม่

Binary Search Tree

Page 60: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

60

65

65ADD Root

65 40 75 30 55 35 70 95 80

Binary Search Tree

Page 61: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

61

65

40

40ADD

65 40 75 30 55 35 70 95 80

การสร้าง Binary Search Tree

Page 62: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

62

65

40 75

75ADD

65 40 75 30 55 35 70 95 80

การสร้าง Binary Search Tree

Page 63: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

63

65

40 75

30

30ADD

65 40 75 30 55 35 70 95 80

การสร้าง Binary Search Tree

Page 64: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

64

65

40

30 55

55ADD

75

65 40 75 30 55 35 70 95 80

การสร้าง Binary Search Tree

Page 65: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

65

65

40

30 55

35

35ADD

75

65 40 75 30 55 35 70 95 80

การสร้าง Binary Search Tree

Page 66: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

66

65

40 75

7030 55

35

70ADD

65 40 75 30 55 35 70 95 80

การสร้าง Binary Search Tree

Page 67: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

67

65

40 75

7030 55

35

95ADD

95

65 40 75 30 55 35 70 95 80

การสร้าง Binary Search Tree

Page 68: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

68

65

40 75

70 9530 55

35 80

80ADD

การสร้าง Binary Search Tree

Page 69: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

69

65

40 75

70 9530 55

35 80

สรุป การสร้าง Binary search Tree ตามล าดับ ดังต่อไปนี้

65 40 75 30 55 35 70 95 80

การสร้าง Binary Search Tree

Page 70: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

70

65

40 75

70 9530 55

35 80

40ADD

ซ้ า !! 1. ทิ้งไปเลย

การสร้าง Binary Search Tree

Page 71: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

71

65

40 75

70 9530 55

35 80

40ADD

ซ้ า !!

2 . เก็บความถี่ Node ที่ซ้ า

2

การสร้าง Binary Search Tree

Page 72: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

72

65

40 75

70 9530 55

35 80

40ADD

3. ใช้ List list มาเชื่อม40ซ้ า !!

การสร้าง Binary Search Tree

Page 73: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

73

แบบฝึกหดั

สร้าง Binary Search Tree จากการ Add ข้อมูล

ตามล าดับ

65 40 30 70 75 55 35 95 80

การสร้าง Binary Search Tree

Page 74: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

74

Complete Binary Tree

Page 75: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Complete Binary Trees

75

15

165

ความสัมพันธ์ระหว่างระดับและจ านวน node

n = 2l -1 เมื่อ l คือ max level

Complete Binary Tree

3 12 201

Page 76: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

76

65

40 70

75 8035 55

Height : 3

จ านวน Node ทั้งหมด n

n = 2 l - 1 เมือ l คือ Max level ของ Tree

Complete Binary Tree

Page 77: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

77

65

40 70

75 8035 55

Height : 3

Max level = 1 n = 21-1 = 1Max level = 2 n = 22-1 = 3Max level = 3 n = 23-1 = 7

Complete Binary Tree

Page 78: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

78

65

40 70

75 8035 55

n = 2l-17 = 2l-1

2l = 7+1 = 8 = 23

ถ้า n = 7 node ได้ Complete Binary Tree มีความสูงเท่าใด ?

n = 2l-1n+1 = 2l

log2( n+1) = log2 2l

log2( n+1) = lHeight (l) = max level = log2( n+1)

Complete Binary Tree

Page 79: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

79

การท่องเข้าไปในBinary Tree

(Binary Tree Traversals)

Page 80: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

การท่องเข้าไปใน Binary Tree• การท่องเข้าไปใน Binary Tree คือ การเข้าไปเยี่ยม node ต่างๆ node ละ 1 ครั้ง จนครบทุก node

อย่างมีแบบแผน

• การเยี่ยมอาจเป็นการเข้าไปอ่านข้อมลู หรือ ประมวลผลใดๆ

• หลักการส าคัญของการท่องเข้าไปใน Binary Tree คือ เยี่ยม Root ( R ) , Subtree ด้านซ้าย ( TL ) , Subtree ด้านขวา ( TR )

ซึ่งมีอยู่ 3 วิธี (ขึ้นอยู่กับว่าจะเยี่ยมสว่นใดก่อน)1. Inorder Traversal

จะเยี่ยม TL R TR ( Root อยู่ข้างใน)2. Preorder Traversal

จะเยี่ยม RTL TR ( Root อยู่ก่อน)3. Postorder Traversal

จะเยี่ยม TL TR R ( Root อยู่หลัง)

80

Page 81: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

การท่องเข้าไปใน Binary Tree• Binary Tree จะประกอบด้วย Subtree

และใน Subtree ประกอบด้วย Subtree ย่อยๆ อีก ดังนั้นเพื่อให้ง่าย จะแทน root ของ subtree ใดๆ ด้วย จะได้

81

A

B C

D E F

G H ILeft Subtree Right Subtree

Root node

E

G H I

A

C

F

B

D

Page 82: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Inorder Traversal

• Inorder Traversalจะเยี่ยม TL R TR ( Root อยู่ข้างใน)

1. เยี่ยม Left Subtree แบบ Inorder2. เยี่ยม Root3. เยี่ยม Right Subtree แบบ Inorder

82

A

B C

D E F

G H ILeft Subtree Right Subtree

Root node

Page 83: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Inorder Traversal

83

ดังนั้นการท่องเข้าไปใน Binary Tree ด้วยวิธี Inorder จะได้ DGBAECHFI

1 E

G H I

A

C

F

B

D

เข้าไปใน Subtree ย่อยสุดทางซ้ายก่อนแล้ว Root ของ Subtree นั้นแล้วเข้าไปใน Subtree ทางขวา

2

3

4

5

6

7

8

9

Page 84: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Preorder Traversal

• Preorder Traversalจะเยี่ยม RTL TR ( Root อยู่ก่อน)

1. เยี่ยม Root 2. เยี่ยม Left Subtree แบบ Preorder3. เยี่ยม Right Subtree แบบ Preorder

84

A

B C

D E F

G H ILeft Subtree Right Subtree

Root node

Page 85: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Preorder Traversal

85

ดังนั้นการท่องเข้าไปใน Binary Tree ด้วยวิธี Preorder จะได ้ ABDGCEFHI

3 E

G H I

A

C

F

B

D

เข้าไปใน Root ของ Subtree นั้นก่อนแล้วเข้าไปใน Subtree ทางซ้ายแล้วเข้าไปใน Subtree ทางขวา

4

2

1

6

5

8

7

9

Page 86: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Preorder Traversal

• Preorder Traversalจะเยี่ยม RTL TR ( Root อยู่ก่อน)

1. เยี่ยม Root

2. เยี่ยม Left Subtree แบบ Preorder3. เยี่ยม Right Subtree แบบ Preorder

86

A

B C

D E F

G H ILeft Subtree Right Subtree

Root node

Page 87: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Preorder Traversal

87

ดังนั้นการท่องเข้าไปใน Binary Tree ด้วยวิธี Preorder จะได ้ ABDGCEFHI

3 E

G H I

A

C

F

B

D

เข้าไปใน Root ของ Subtree นั้นก่อนแล้วเข้าไปใน Subtree ทางซ้ายแล้วเข้าไปใน Subtree ทางขวา

4

2

1

6

5

8

7

9

Page 88: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Postorder Traversal

• Postorder Traversalจะเยี่ยม TL TRR ( Root อยู่หลัง)

1. เยี่ยม Left Subtree แบบ Postorder2. เยี่ยม Right Subtree แบบ Postorder

3. เยี่ยม Root

88

A

B C

D E F

G H ILeft Subtree Right Subtree

Root node

Page 89: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Postorder Traversal

89

ดังนั้นการท่องเข้าไปใน Binary Tree ด้วยวิธี Postorder จะได ้ GDBEHIFCA

2 E

G H I

A

C

F

B

D

เข้าไปใน Subtree ทางซ้ายก่อนแล้วเข้าไปใน Subtree ทางขวาแล้วเข้าไปใน Root ของ Subtree นั้น

1

3

9

4

8

5

7

6

Page 90: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Tree Traversal

• Preorder

90

A

B C

D E F G

Page 91: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Tree Traversal

• Inorder

91

A

B C

D E F G

Page 92: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

Tree Traversal

• Postorder

92

A

B C

D E F G

Page 93: CS321 : Data Structure / Algorithm Analysismathcom.uru.ac.th/~beebrain/Slide/4122303A/Tree.pdf · •โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน

แบบฝึกหัด

93

จงท่องเข้าไปใน Binary Tree ต่อไปนี้ในแบบPreorder, Inorder และ PostOrder

A

B D

C

+

A -

* D

B C

A

B C

D

E

E

G

1.

2.

3.