Chapter 5 Tree Part 2

Preview:

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

1

WATTANAPONG SUTTAPAKSOFTWARE ENGINEERING, SCHOOL OF INFORMATION

COMMUNICATION TECHNOLOGY,UNIVERSITY OF PHAYAO

Chapter 5Tree Part 2

2

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

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

3

TREE TRAVERSAL

4

Tree Traversal

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

inorder preorder postorder

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

5

Tree Traversal

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

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

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

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

เป+นต่�น

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;

7

Tree Traversal

inorder Ex1

6

4 8

2 711

5

1 3

1 2 3 4 5 6 7 8 11

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นต่�วเลข้ด�งน��นจุ.งต่�องใชื่�อ�ลกอร$ท.มีด�งท��กล�าวมีา

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

10

Tree Traversal

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

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

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

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

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;

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

13

Tree Traversal

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

*

/ +

+ 7 14

1 3

* / + 1 3 4 + 7 1

14

Tree Traversal

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

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

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

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

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;

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

17

Tree Traversal

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

*

/ +

+ 7 14

1 3

1 3 + 4 / 7 1 + *

18

DELETION NODE

19

Deletion node

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

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

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

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

20

Deletion node

deletion node Ex1 ลบ โหนด 5

6

4 8

2 711

5

1 3

21

Deletion node

deletion node Ex2 ลบ โหนด 11

6

4 8

2 711

5

1 3 14

13

15

22

Deletion node

deletion node Ex2 ลบ โหนด 11

6

4 8

2 75

1 3

14

13

15

23

Deletion node

deletion node Ex3 ลบ โหนด 4

6

4 8

2 711

5

1 3

24

Deletion node

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

6

3 8

2 711

5

1

25

Deletion node

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

6

4 8

2 711

5

1 3

26

Deletion node

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

6

5 8

2 711

1 3

27

AVL TREE

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

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

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

31

AVL Tree

6

5 8

3 9

6

4 8

3 95 7

6

4 8

3 9511

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

32

AVL Tree

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

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

6

5 8

2

1

33

AVL Tree

6

5 8

2

1

1

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

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

34

AVL Tree

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

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

35

ab

ca

bcsingle rotation

cb

a

ab

csingle rotation

36

AVL Tree

6

5 8

2

1

37

AVL Tree

6

5

8

2

1

38

AVL Tree

6

5

8

2

1

39

AVL Tree

6

5

82

1

40

ac

b

double rotation

ab

c

double rotation

bc

a

ab

c

ca

b

cb

a

41

4 rotations

42

T0

T1

T2 T3

T0 T1T2 T3

single rotationa

bc

ab

c

43

ab

c

T0 T1

T2

T3

ab

c

T0 T1T2 T3

single rotation

44

ab

c

T0 T1T2 T3

double rotationa

bc

T0 T1

T2

T3a

c

bT0

T3

T1T2

45

ab

c

T0 T1T2 T3

double rotation

ab

cT0

T1

T2 T3

ac

bT0

T3

T1T2

46

AVL Tree

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

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

- 7 9 15

47

AVL Tree

1

1 22 10 9 8 5 4 15 6 7 3

10

22

double rotation

48

AVL Tree

1

1 22 10 9 8 5 4 15 6 7 3

10

22

9

8

double rotation

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

50

AVL Tree

8

1 22 10 9 8 5 4 15 6 7 3

10

22

1

5 9

4

51

AVL Tree

1 22 10 9 8 5 4 15 6 7 3

810

22

4

5 91

52

AVL Tree

1 22 10 9 8 5 4 15 6 7 3

810

22

4

5 9115

6

7

53

AVL Tree

1 22 10 9 8 5 4 15 6 7 3

810

22

4

6 9115

753

54

AVL Tree

ลบโหนด 7 9 15

810

22

4

6 9115

753

Ex 2

55

AVL Tree

ลบโหนด 7 9 15

815

22

4

61 10

53

Ex 2

56

AVL Tree

ลบโหนด 7 9 15

810

22

4

61

53

Ex 2

57

AVL Tree

ลบโหนด 7 9 15

822

10

4

61

53

Ex 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

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

AVL Tree60

44

62

78T0

T1

T2 T3

44

62

78

T0T1 T2 T3

reconstruction

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 ?

62

4 rotation types

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 เร�ยงต่ามีล/าด�บบนลงล�าง

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 เร�ยงต่ามีล/าด�บบนลงล�าง

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 เร�ยงต่ามีล/าด�บบนลงล�าง

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 เร�ยงต่ามีล/าด�บบนลงล�าง

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

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

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

70

Another Tree

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