70
WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 5 Tree Part 2 1

Chapter 5 Tree Part 2

Embed Size (px)

DESCRIPTION

Chapter 5 Tree Part 2. WATTANAPONG SUTTAPAK Software Engineering, School of Information Communication Technology, University of PHAYAO. จุดประสงค์ บทเรียนที่ 5. มีความรู้ความเข้าใจเรื่องการ ท่องไบนารี่ท รีทั้ง 3 แบบ สามารถเขียนโปรแกรมเพิ่ม ลบ ค้นหา และ แสดงผลไบนารี่ท รีได้ - PowerPoint PPT Presentation

Citation preview

Page 1: Chapter 5 Tree Part 2

1

WATTANAPONG SUTTAPAKSOFTWARE ENGINEERING, SCHOOL OF INFORMATION

COMMUNICATION TECHNOLOGY,UNIVERSITY OF PHAYAO

Chapter 5Tree Part 2

Page 2: Chapter 5 Tree Part 2

2

จุ�ดประสงค์ บทเร�ยนท�� 5

มี�ค์วามีร� �ค์วามีเข้�าใจุเร��องการท�องไบนาร��ทร�ท��ง 3 แบบ สามีารถเข้�ยนโปรแกรมีเพิ่$�มี ลบ ค์�นหา และแสดงผลไบนาร��ทร�ได�มี�ค์วามีร� �ค์วามีเข้�าใจุในเร��องเอว�แอลทร�ได�มี�ค์วามีร� �ค์วามีเข้�าใจุในเร��องการปร�บโหนดข้องเอว�แอลทร� สามีารถเพิ่$�มี ลบ ค์�นหา และแสดงผลเอว�แอลทร�ได�

Page 3: Chapter 5 Tree Part 2

3

TREE TRAVERSAL

Page 4: Chapter 5 Tree Part 2

4

Tree Traversal

Tree traversal ชื่��อภาษาไทย การท�องโหนด แบ�งเป+น 3 ประเภทค์�อ

inorder preorder postorder

โดยแต่�ละประเภทมี�ล�กษณะด�งต่�อไปน��

Page 5: Chapter 5 Tree Part 2

5

Tree Traversal

inorder เป+นการเข้�าเข้�าถ.งโหนดแบบ ascending order น��น ค์�อเข้�าต่ามีล/าด�บจุากน�อยไปหามีาก หร�อต่ามีล/าด�บก�อนหล�ง(เชื่�น

ต่�วอ�กษรก�อนไปหล�ง)การเข้�าถ.งโหนดว$ธี�น��มี�ล/าด�บการเข้�าถ.งต่ามีล/าด�บค์วามี

ส/าค์�ญค์�อ1. โหนดซ้�าย2. โหนดพิ่�อแมี�3. โหนดข้วา

ประโยชื่นข้องการท�องโหนดแบบ inorder เชื่�น การ เร�ยงล/าด�บข้�อมี�ล การหาค์�ามีากส�ด น�อยส�ด ค์�ากลาง

เป+นต่�น

Page 6: Chapter 5 Tree Part 2

6

Tree Traversal

inorder step

1. start at root node ,set root to c-node2. check c-node has L-child?

2.1 Y : change L-child to c-node then go to 22.2 N : print c-node check c-node has R-child?

2.2.1 Y: set R-child to c-node then go to 2.2.2.2 N: return;

Page 7: Chapter 5 Tree Part 2

7

Tree Traversal

inorder Ex1

6

4 8

2 711

5

1 3

1 2 3 4 5 6 7 8 11

Page 8: Chapter 5 Tree Part 2

8

Tree Traversal

inorder Ex2

6

4 9

7

11

5

4 5 6 7 8 9 11

13

8

13

จุะเห3นว�า inorderเราจุะสามีารถต่อบได�ท�นท�น��นค์�อล/าด�บน�อยไปหามีากแต่�ในการใชื่�งานจุร$ง(coding) จุะไมี�เห3นต่�วเลข้ด�งน��นจุ.งต่�องใชื่�อ�ลกอร$ท.มีด�งท��กล�าวมีา

Page 9: Chapter 5 Tree Part 2

9

Tree Traversal

inorder Ex3 สมีมีต่$ s เป+น class student เก3บ id, name เร�ยงล/าด�บ id

s1

s2

s3

s6

s8

s5

s2 s5 s1 s6 s4 s3 s8 s7

s4

s7

กรณ�ข้�อมี�ลเป+นค์ลาส และมี�การล/าด�บ attribute

Page 10: Chapter 5 Tree Part 2

10

Tree Traversal

preorder เป+นการเข้�าถ.งโหนด โดยจุ�ดประสงค์ในการเข้�าถ.งย�งไมี�

แน�ชื่�ดแต่กต่�างจุาก inorder ท��มี�จุ�ดประสงค์ชื่�ดเจุนโดยการเข้�าถ.งโหนดว$ธี�น��มี�ล/าด�บการเข้�าถ.งต่ามีล/าด�บ

ค์วามีส/าค์�ญค์�อ1. โหนดพิ่�อแมี�2. โหนดซ้�าย3. โหนดข้วา

ต่�วอย�างการประย�กต่ใชื่� ได�แก� การแปลงเป+น prefix

Page 11: Chapter 5 Tree Part 2

11

Tree Traversal

preorder step

1. start at root node , set root to c-node2. print c-node3. check c-node has L-child?

3.1 Y : change L-child to c-node then go to 23.2 N : check c-node has R-child?

3.2.1 Y: set R-child to c-node then go to 2.3.2.2 N: return;

Page 12: Chapter 5 Tree Part 2

12

Tree Traversal

preorder Ex1

6

4 8

2 711

5

1 3

6 4 2 1 3 5 8 7 11

จุะส�งเกต่�เห3นว�าเมี��อน/าข้�อมี�ล ท��ได�จุาก preorder ไป

insert จุะได�ล�กษณะต่ามีtree

Page 13: Chapter 5 Tree Part 2

13

Tree Traversal

preorder Ex2((1+3)/4)*(7+1)

*

/ +

+ 7 14

1 3

* / + 1 3 4 + 7 1

Page 14: Chapter 5 Tree Part 2

14

Tree Traversal

postorder เป+นการเข้�าถ.งโหนด ท��จุ�ดประสงค์ไมี�ชื่�ดเจุนเชื่�น

ก�น( เหมี�อน preorder)โดยการเข้�าถ.งโหนดว$ธี�น��มี�ล/าด�บการเข้�าถ.งต่ามีล/าด�บ

ค์วามีส/าค์�ญค์�อ1. โหนดซ้�าย2. โหนดข้วา3. โหนดพิ่�อแมี�

ต่�วอย�างการประย�กต่ใชื่� ได�แก� การแปลงเป+น postfix

Page 15: Chapter 5 Tree Part 2

15

Tree Traversal

postorder step

1. start at root node , set root to c-node2. check c-node has L-child?

3.1 Y : change L-child to c-node then go to 23.2 N : check c-node has R-child?

3.2.1 Y: set R-child to c-node then go to 2.3.2.2 N: print L-child , return;

Page 16: Chapter 5 Tree Part 2

16

Tree Traversal

postorder Ex1

6

4 8

2 711

5

1 3

1 3 2 5 4 7 11

8 6

จุะส�งเกต่�เห3นว�าเมี��อน/าข้�อมี�ล ท��ได�จุาก postorder

(จุากหล�งไปหน�า) น/าไปinsert จุะได�ล�กษณะต่ามีtree

Page 17: Chapter 5 Tree Part 2

17

Tree Traversal

postorder Ex2((1+3)/4)*(7+1)

*

/ +

+ 7 14

1 3

1 3 + 4 / 7 1 + *

Page 18: Chapter 5 Tree Part 2

18

DELETION NODE

Page 19: Chapter 5 Tree Part 2

19

Deletion node

กระบวนการลบโหนด มี�ค์วามีซ้�บซ้�อนกว�าการเพิ่$�มี การอ�านและ การค์�นหา เน��องจุากเมี��อลบแล�ว ต่�องพิ่$จุารณาโหนดท��มีาแทนท�� โหนดท��ลบ

ข้��นต่อนการลบโหนด1. ถ�าโหนดท��ลบไมี�มี� leaf node ไมี�ต่�องหาโหนดมีาแทน2. ถ�าโหนดท��ลบมี�เพิ่�ยง 1 leaf node ให�น/า leaf node น��น

มีาแทนท��ได�เลย3. ถ�าโหนดท��ลบมี� 2 leaf node ให�แทนท��ด�วยโหนดด�านซ้�ายท��

มี�ค์�ามีากท��ส�ดหร�อโหนดด�านข้วาท��มี�ค์�าน�อยท��ส�ด

Page 20: Chapter 5 Tree Part 2

20

Deletion node

deletion node Ex1 ลบ โหนด 5

6

4 8

2 711

5

1 3

Page 21: Chapter 5 Tree Part 2

21

Deletion node

deletion node Ex2 ลบ โหนด 11

6

4 8

2 711

5

1 3 14

13

15

Page 22: Chapter 5 Tree Part 2

22

Deletion node

deletion node Ex2 ลบ โหนด 11

6

4 8

2 75

1 3

14

13

15

Page 23: Chapter 5 Tree Part 2

23

Deletion node

deletion node Ex3 ลบ โหนด 4

6

4 8

2 711

5

1 3

Page 24: Chapter 5 Tree Part 2

24

Deletion node

deletion node Ex3 ลบ โหนด 4 ว$ธี�ท�� 1

6

3 8

2 711

5

1

Page 25: Chapter 5 Tree Part 2

25

Deletion node

deletion node Ex3 ลบ โหนด 4 ว$ธี�ท�� 2

6

4 8

2 711

5

1 3

Page 26: Chapter 5 Tree Part 2

26

Deletion node

deletion node Ex3 ลบ โหนด 4 ว$ธี�ท�� 2

6

5 8

2 711

1 3

Page 27: Chapter 5 Tree Part 2

27

AVL TREE

Page 28: Chapter 5 Tree Part 2

28

AVL Tree

เป+น tree (Adel’son-Vel’ski and Landis) พิ่�ฒนาค์วามีสามีารถข้อง binary search tree(b-s-tree

) ร�ปแบบโหนดข้.�นก�บการล/าด�บการเพิ่$�มีข้�อมี�ล ท/าให�จุ/านวนโหนด

มี�โอกาสจุ�ดเร�ยงเป+น L-node ท��งหมีดหร�อ R-node ท��งหมีด ท/าให�การค์�นหาเก$ดเป+น worst case(O(n)) เชื่�น

6

5

3 6

5

3

Page 29: Chapter 5 Tree Part 2

29

AVL Tree

โดยต่�องมี�ค์�ณสมีบ�ต่$ด�งต่�อไปน�� เป+น binary search tree มี�เง��อนไข้สมีด�ล(balance) ข้อง tree น��นค์�อ P-node มี� level ข้อง L-

child และ R-child มี�ค์วามีแต่กต่�างไมี�เก$น 1

6

5 80 0

16

5 8

9

0

0

1

26

5

30

1

2

Page 30: Chapter 5 Tree Part 2

30

AVL Tree

44

17 62

1 50 7832

48

46 49

54

51 56

64 88

81 91

35

h = 1 h = 2 h = 3 h = 4

Page 31: Chapter 5 Tree Part 2

31

AVL Tree

6

5 8

3 9

6

4 8

3 95 7

6

4 8

3 9511

โหนด 8 ค์วามีส�งต่�างก�น0 ก�บ 2

Page 32: Chapter 5 Tree Part 2

32

AVL Tree

InsertionEx1 ต่�องการเพิ่$�มี 6 5 8 2 1 3

ท/าการเพิ่$�มีข้�อมี�ลเหมี�อน binary search tree

6

5 8

2

1

Page 33: Chapter 5 Tree Part 2

33

AVL Tree

6

5 8

2

1

1

สมีด�ลแต่�ผ$ดกฏข้อง balance search tree

ด�งน��นจุ.งต่�อง rebalance tree ด�วยว$ธี�การหมี�น

Page 34: Chapter 5 Tree Part 2

34

AVL Tree

Rotation เป+นการปร�บสมีด�ลข้อง AVL Tree แบ�งเป+น 2 ว$ธี�ค์�อ

1. หมี�นค์ร��งเด�ยว2. หมี�นสองค์ร��ง

Page 35: Chapter 5 Tree Part 2

35

ab

ca

bcsingle rotation

cb

a

ab

csingle rotation

Page 36: Chapter 5 Tree Part 2

36

AVL Tree

6

5 8

2

1

Page 37: Chapter 5 Tree Part 2

37

AVL Tree

6

5

8

2

1

Page 38: Chapter 5 Tree Part 2

38

AVL Tree

6

5

8

2

1

Page 39: Chapter 5 Tree Part 2

39

AVL Tree

6

5

82

1

Page 40: Chapter 5 Tree Part 2

40

ac

b

double rotation

ab

c

double rotation

bc

a

ab

c

ca

b

cb

a

Page 41: Chapter 5 Tree Part 2

41

4 rotations

Page 42: Chapter 5 Tree Part 2

42

T0

T1

T2 T3

T0 T1T2 T3

single rotationa

bc

ab

c

Page 43: Chapter 5 Tree Part 2

43

ab

c

T0 T1

T2

T3

ab

c

T0 T1T2 T3

single rotation

Page 44: Chapter 5 Tree Part 2

44

ab

c

T0 T1T2 T3

double rotationa

bc

T0 T1

T2

T3a

c

bT0

T3

T1T2

Page 45: Chapter 5 Tree Part 2

45

ab

c

T0 T1T2 T3

double rotation

ab

cT0

T1

T2 T3

ac

bT0

T3

T1T2

Page 46: Chapter 5 Tree Part 2

46

AVL Tree

Exercise- เพิ่$�มีโหนดใน AVL Tree ข้องค์�าต่�อไปน��

- 1 22 10 9 8 5 4 15 6 7 3- ลบโหนดต่�อไปน��จุาก AVL Tree ด�านบน

- 7 9 15

Page 47: Chapter 5 Tree Part 2

47

AVL Tree

1

1 22 10 9 8 5 4 15 6 7 3

10

22

double rotation

Page 48: Chapter 5 Tree Part 2

48

AVL Tree

1

1 22 10 9 8 5 4 15 6 7 3

10

22

9

8

double rotation

Page 49: Chapter 5 Tree Part 2

49

AVL Tree

8

1 22 10 9 8 5 4 15 6 7 3

10

22

91

5

ab

c

T0 T1

T2

T3

ab

c

T0 T1T2 T3

single rotation

Page 50: Chapter 5 Tree Part 2

50

AVL Tree

8

1 22 10 9 8 5 4 15 6 7 3

10

22

1

5 9

4

Page 51: Chapter 5 Tree Part 2

51

AVL Tree

1 22 10 9 8 5 4 15 6 7 3

810

22

4

5 91

Page 52: Chapter 5 Tree Part 2

52

AVL Tree

1 22 10 9 8 5 4 15 6 7 3

810

22

4

5 9115

6

7

Page 53: Chapter 5 Tree Part 2

53

AVL Tree

1 22 10 9 8 5 4 15 6 7 3

810

22

4

6 9115

753

Page 54: Chapter 5 Tree Part 2

54

AVL Tree

ลบโหนด 7 9 15

810

22

4

6 9115

753

Ex 2

Page 55: Chapter 5 Tree Part 2

55

AVL Tree

ลบโหนด 7 9 15

815

22

4

61 10

53

Ex 2

Page 56: Chapter 5 Tree Part 2

56

AVL Tree

ลบโหนด 7 9 15

810

22

4

61

53

Ex 2

Page 57: Chapter 5 Tree Part 2

57

AVL Tree

ลบโหนด 7 9 15

822

10

4

61

53

Ex 2

Page 58: Chapter 5 Tree Part 2

AVL Tree58

44

17 62

1 50 7818

48

46 49

54

51 56

64 88

81 91

2 3

11 122

Ex 3

19

1

4

Page 59: Chapter 5 Tree Part 2

AVL Tree59

44

17 62

1 50 7818

48

46 49

54

51 56

64 88

81 91T0

T1

T2

T3

1 3

11 122

Ex 3

Page 60: Chapter 5 Tree Part 2

AVL Tree60

44

62

78T0

T1

T2 T3

44

62

78

T0T1 T2 T3

reconstruction

Page 61: Chapter 5 Tree Part 2

AVL Tree61

44

17

62

1

50

78

18 48

46 49

54

51 56

64 88

81 91

T0

T1

T2

T3

T0 T1 T2 T3 ?

Page 62: Chapter 5 Tree Part 2

62

4 rotation types

Page 63: Chapter 5 Tree Part 2

63

4 rotation types

T0

T1

T2 T3

T0 T1T2 T3

single rotation

a=zb=y

c=xa=z

b=yc=x

a b c เร�ยงต่ามีล/าด�บซ้�ายไปข้วา หร�อ a<b<cx y z เร�ยงต่ามีล/าด�บบนลงล�าง

Page 64: Chapter 5 Tree Part 2

64

4 rotation types

T0 T1

T2

T3

T0 T1T2 T3

single rotationa=x

b=yc=z

c=z

b=y

a=x

a b c เร�ยงต่ามีล/าด�บซ้�ายไปข้วา หร�อ a<b<cx y z เร�ยงต่ามีล/าด�บบนลงล�าง

Page 65: Chapter 5 Tree Part 2

65

4 rotation types

T0 T1T2 T3

double rotation

T0

T3

T1T2

a=zc=y

b=x

a=z c=yb=x

a b c เร�ยงต่ามีล/าด�บซ้�ายไปข้วา หร�อ a<b<cx y z เร�ยงต่ามีล/าด�บบนลงล�าง

Page 66: Chapter 5 Tree Part 2

66

4 rotation types

T0 T1T2 T3

double rotation

T0

T3

T1T2

a=yc=z

b=x

b=xa=y c=z

a b c เร�ยงต่ามีล/าด�บซ้�ายไปข้วา หร�อ a<b<cx y z เร�ยงต่ามีล/าด�บบนลงล�าง

Page 67: Chapter 5 Tree Part 2

67

อ�ลกอร$ท.มีการเพิ่$�มี ลบ โหนด เพิ่��อปร�บโค์รงสร�าง1. set add or delete node to c-node2. c-node is root then exit 3. c-node is balance ?

3.1 c-node is balance3.1.1 set parent node of c-node to c-node 3.1.2 go to 2

3.2 c-node is not balance3.2.1 set c-node to z node3.2.2 set y to longest node : child L or R of z node (equal set

R)3.2.3 set x to longest node : child L or R of y node (equal set

R)3.2.4 check 4 reconstruction similar with a,b,c and x,y,z

Page 68: Chapter 5 Tree Part 2

AVL Tree68

44

17 62

1 50 7818

48

46 49

54

51 56

64 88

81 91T0

T1

T2

T3

1 3

11 122

zy

x

Page 69: Chapter 5 Tree Part 2

AVL Tree69

44

17

62

1

50

78

18 48

46 49

54

51 56

64 88

81 91

T0

T1

T2

T3

z

y

x

Page 70: Chapter 5 Tree Part 2

70

Another Tree

splay tree2-4 tree or 2-3-4 treeRed Black tree