งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

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

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 5 Tree Part 2 1."— ใบสำเนางานนำเสนอ:

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

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

3 3 TREE TRAVERSAL

4 Tree Traversal 4 Tree traversal ชื่อภาษาไทย การท่องโหนด แบ่งเป็น 3 ประเภทคือ  inorder  preorder  postorder โดยแต่ละประเภทมีลักษณะดังต่อไปนี้

5 Tree Traversal 5 inorder เป็นการเข้าเข้าถึงโหนดแบบ ascending order นั่นคือ เข้าตามลำดับจากน้อยไปหามาก หรือตามลำดับก่อนหลัง ( เช่นตัวอักษรก่อนไปหลัง ) การเข้าถึงโหนดวิธีนี้มีลำดับการเข้าถึงตามลำดับ ความสำคัญคือ 1. โหนดซ้าย 2. โหนดพ่อแม่ 3. โหนดขวา ประโยชน์ของการท่องโหนดแบบ inorder เช่น การ เรียงลำดับข้อมูล การหาค่ามากสุด น้อยสุด ค่ากลาง เป็นต้น

6 Tree Traversal 6 inorder step 1. start at root node,set root to c-node 2. check c-node has L-child? 2.1 Y : change L-child to c-node then go to 2 2.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 7 inorder Ex1 6 48 27115 13 1 2 345 67 8

8 Tree Traversal 8 inorder Ex2 6 49 7 115 4 5 678 9 13 8 จะเห็นว่า inorder เราจะสามารถตอบได้ทันที นั่นคือลำดับน้อยไปหามาก แต่ในการใช้งานจริง (coding) จะไม่เห็นตัวเลข ดังนั้นจึงต้องใช้ อัลกอริทึมดังที่กล่าวมา

9 Tree Traversal 9 inorder Ex3 สมมติ s เป็น class student เก็บ id, name เรียงลำดับ id s1 s2s3 s6 s8s5 s2 s5 s1s6s4 s3s8 s7 s4 s7 กรณีข้อมูลเป็นคลาส และมีการลำดับ attribute

10 Tree Traversal 10 preorder เป็นการเข้าถึงโหนด โดยจุดประสงค์ในการเข้าถึงยัง ไม่แน่ชัดแตกต่างจาก inorder ที่มีจุดประสงค์ชัดเจน โดยการเข้าถึงโหนดวิธีนี้มีลำดับการเข้าถึงตามลำดับ ความสำคัญคือ 1. โหนดพ่อแม่ 2. โหนดซ้าย 3. โหนดขวา ตัวอย่างการประยุกต์ใช้ ได้แก่ การแปลงเป็น prefix

11 Tree Traversal 11 preorder step 1. start at root node, set root to c-node 2. print c-node 3. check c-node has L-child? 3.1 Y : change L-child to c-node then go to 2 3.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 12 preorder Ex1 6 48 27115 13 6 4 213 58 7 จะสังเกตุเห็นว่าเมื่อนำข้อมูล ที่ได้จาก preorder ไป insert จะได้ลักษณะตาม tree

13 Tree Traversal 13 preorder Ex2 ((1+3)/4)*(7+1) * /+ +714 13 * / +13 4+ 7 1

14 Tree Traversal 14 postorder เป็นการเข้าถึงโหนด ที่จุดประสงค์ไม่ชัดเจนเช่นกัน ( เหมือน preorder) โดยการเข้าถึงโหนดวิธีนี้มีลำดับการเข้าถึงตามลำดับ ความสำคัญคือ 1. โหนดซ้าย 2. โหนดขวา 3. โหนดพ่อแม่ ตัวอย่างการประยุกต์ใช้ ได้แก่ การแปลงเป็น postfix

15 Tree Traversal 15 postorder step 1. start at root node, set root to c-node 2. check c-node has L-child? 3.1 Y : change L-child to c-node then go to 2 3.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 16 postorder Ex1 6 48 27115 13 1 3 254 7 8 6 จะสังเกตุเห็นว่าเมื่อนำข้อมูล ที่ได้จาก postorder ( จากหลังไปหน้า ) นำไป insert จะได้ลักษณะตาม tree

17 Tree Traversal 17 postorder Ex2 ((1+3)/4)*(7+1) * /+ +714 13 1 3 +4/ 71 + *

18 18 DELETION NODE

19 Deletion node 19 กระบวนการลบโหนด มีความซับซ้อนกว่าการเพิ่ม การอ่าน และการค้นหา เนื่องจากเมื่อลบแล้ว ต้องพิจารณาโหนดที่มา แทนที่โหนดที่ลบ ขั้นตอนการลบโหนด 1. ถ้าโหนดที่ลบไม่มี leaf node ไม่ต้องหาโหนดมาแทน 2. ถ้าโหนดที่ลบมีเพียง 1 leaf node ให้นำ leaf node นั้นมา แทนที่ได้เลย 3. ถ้าโหนดที่ลบมี 2 leaf node ให้แทนที่ด้วยโหนดด้านซ้าย ที่มีค่ามากที่สุดหรือโหนดด้านขวาที่มีค่าน้อยที่สุด

20 Deletion node 20 deletion node Ex1 ลบ โหนด 5 6 48 27115 13

21 Deletion node 21 deletion node Ex2 ลบ โหนด 11 6 48 27115 13 14 13 15

22 Deletion node 22 deletion node Ex2 ลบ โหนด 11 6 48 275 13 14 13 15

23 Deletion node 23 deletion node Ex3 ลบ โหนด 4 6 48 27115 13

24 Deletion node 24 deletion node Ex3 ลบ โหนด 4 วิธีที่ 1 6 38 27115 1

25 Deletion node 25 deletion node Ex3 ลบ โหนด 4 วิธีที่ 2 6 48 27115 13

26 Deletion node 26 deletion node Ex3 ลบ โหนด 4 วิธีที่ 2 6 58 2711 13

27 27 AVL TREE

28 AVL Tree 28 เป็น 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 29 โดยต้องมีคุณสมบัติดังต่อไปนี้  เป็น binary search tree  มีเงื่อนไขสมดุล (balance) ของ tree นั่นคือ P-node มี level ของ L- child และ R-child มีความแตกต่างไม่เกิน 1 6 58 0 0 1 6 58 9 0 0 1 2 6 5 3 0 1 2

30 AVL Tree 30 44 17 62 1 5078 32 48 4649 54 5156 64 88 8191 35 h = 1h = 2h = 3 h = 4

31 AVL Tree 31 6 58 3 9 6 4 8 3 9 5 7 6 4 8 3 9 5 11 โหนด 8 ความสูงต่างกัน 0 กับ 2

32 AVL Tree 32 Insertion Ex1 ต้องการเพิ่ม 6 5 8 2 1 3 ทำการเพิ่มข้อมูลเหมือน binary search tree 6 58 2 1

33 AVL Tree 33 6 58 2 1 1 สมดุลแต่ผิดกฏของ balance search tree ดังนั้นจึงต้อง rebalance tree ด้วยวิธีการหมุน

34 AVL Tree 34 Rotation เป็นการปรับสมดุลของ AVL Tree แบ่งเป็น 2 วิธีคือ 1. หมุนครั้งเดียว 2. หมุนสองครั้ง

35 35 a b c a b c single rotation c b a a b c

36 AVL Tree 36 6 58 2 1

37 AVL Tree 37 6 5 8 2 1

38 AVL Tree 38 6 5 8 2 1

39 AVL Tree 39 6 5 8 2 1

40 40 a c b double rotation a b c b c a a b c c a b c b a

41 4 rotations 41

42 42 T0T0 T1T1 T2T2 T3T3 T0T0 T1T1 T2T2 T3T3 single rotation a b c a b c

43 43 a b c T0T0 T1T1 T2T2 T3T3 a b c T0T0 T1T1 T2T2 T3T3 single rotation

44 44 a b c T0T0 T1T1 T2T2 T3T3 double rotation a b c T0T0 T1T1 T2T2 T3T3 a c b T0T0 T3T3 T1T1 T2T2

45 45 a b c T0T0 T1T1 T2T2 T3T3 double rotation a b c T0T0 T1T1 T2T2 T3T3 a c b T0T0 T3T3 T1T1 T2T2

46 AVL Tree 46 Exercise - เพิ่มโหนดใน AVL Tree ของค่าต่อไปนี้ - 1 22 10 9 8 5 4 15 6 7 3 - ลบโหนดต่อไปนี้จาก AVL Tree ด้านบน - 7 9 15

47 AVL Tree 47 1 1 22 10 9 8 5 4 15 6 7 3 10 22 double rotation

48 AVL Tree 48 1 1 22 10 9 8 5 4 15 6 7 3 10 22 9 8 double rotation

49 AVL Tree 49 8 1 22 10 9 8 5 4 15 6 7 3 10 22 91 5 a b c T0T0 T1T1 T2T2 T3T3 a b c T0T0 T1T1 T2T2 T3T3 single rotation

50 AVL Tree 50 8 1 22 10 9 8 5 4 15 6 7 3 10 22 1 5 9 4

51 AVL Tree 51 1 22 10 9 8 5 4 15 6 7 3 8 10 22 4 591

52 AVL Tree 52 1 22 10 9 8 5 4 15 6 7 3 8 10 22 4 5 91 15 6 7

53 AVL Tree 53 1 22 10 9 8 5 4 15 6 7 3 8 10 22 4 6 9 1 15 753

54 AVL Tree 54 ลบโหนด 7 9 15 8 10 22 4 6 9 1 15 753 Ex 2

55 AVL Tree 55 ลบโหนด 7 9 15 8 15 22 4 6 1 10 53 Ex 2

56 AVL Tree 56 ลบโหนด 7 9 15 8 10 22 4 6 1 53 Ex 2

57 AVL Tree 57 ลบโหนด 7 9 15 8 22 10 4 6 1 53 Ex 2

58 AVL Tree 58 44 17 62 1 5078 18 48 4649 54 5156 64 88 8191 23 1 1 1 2 2 Ex 3 19 1 4

59 AVL Tree 59 44 17 62 1 5078 18 48 4649 54 5156 64 88 8191 T0T0 T1T1 T2T2 T3T3 13 1 1 1 2 2 Ex 3

60 AVL Tree 60 44 62 78 T0T0 T1T1 T2T2 T3T3 44 62 78 T0T0 T1T1 T2T2 T3T3 reconstruction

61 AVL Tree 61 44 17 62 1 50 78 18 48 4649 54 5156 64 88 8191 T0T0 T1T1 T2T2 T3T3 T 0 T 1 T 2 T 3 ?

62 4 rotation types 62

63 4 rotation types 63 T0T0 T1T1 T2T2 T3T3 T0T0 T1T1 T2T2 T3T3 single rotation a=z b=y c=x a=z b=y c=x a b c เรียงตามลำดับซ้ายไปขวา หรือ a { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.in.th/10/2692516/slides/slide_63.jpg", "name": "4 rotation types 63 T0T0 T1T1 T2T2 T3T3 T0T0 T1T1 T2T2 T3T3 single rotation a=z b=y c=x a=z b=y c=x a b c เรียงตามลำดับซ้ายไปขวา หรือ a

64 4 rotation types 64 T0T0 T1T1 T2T2 T3T3 T0T0 T1T1 T2T2 T3T3 single rotation a=x b=y c=z b=y a=x a b c เรียงตามลำดับซ้ายไปขวา หรือ a { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.in.th/10/2692516/slides/slide_64.jpg", "name": "4 rotation types 64 T0T0 T1T1 T2T2 T3T3 T0T0 T1T1 T2T2 T3T3 single rotation a=x b=y c=z b=y a=x a b c เรียงตามลำดับซ้ายไปขวา หรือ a

65 4 rotation types 65 T0T0 T1T1 T2T2 T3T3 double rotation T0T0 T3T3 T1T1 T2T2 a=z c=y b=x a=z c=y b=x a b c เรียงตามลำดับซ้ายไปขวา หรือ a { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.in.th/10/2692516/slides/slide_65.jpg", "name": "4 rotation types 65 T0T0 T1T1 T2T2 T3T3 double rotation T0T0 T3T3 T1T1 T2T2 a=z c=y b=x a=z c=y b=x a b c เรียงตามลำดับซ้ายไปขวา หรือ a

66 4 rotation types 66 T0T0 T1T1 T2T2 T3T3 double rotation T0T0 T3T3 T1T1 T2T2 a=y c=z b=x a=y c=z a b c เรียงตามลำดับซ้ายไปขวา หรือ a { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.in.th/10/2692516/slides/slide_66.jpg", "name": "4 rotation types 66 T0T0 T1T1 T2T2 T3T3 double rotation T0T0 T3T3 T1T1 T2T2 a=y c=z b=x a=y c=z a b c เรียงตามลำดับซ้ายไปขวา หรือ a

67 67 อัลกอริทึมการเพิ่ม ลบ โหนด เพื่อปรับโครงสร้าง 1. set add or delete node to c-node 2. c-node is root then exit 3. c-node is balance ? 3.1 c-node is balance 3.1.1 set parent node of c-node to c-node 3.1.2 go to 2 3.2 c-node is not balance 3.2.1 set c-node to z node 3.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

68 AVL Tree 68 44 17 62 1 5078 18 48 4649 54 5156 64 88 8191 T0T0 T1T1 T2T2 T3T3 13 1 1 1 2 2 z y x

69 AVL Tree 69 44 17 62 1 50 78 18 48 4649 54 5156 64 88 8191 T0T0 T1T1 T2T2 T3T3 z y x

70 Another Tree 70 splay tree 2-4 tree or 2-3-4 tree Red Black tree


ดาวน์โหลด ppt WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 5 Tree Part 2 1.

งานนำเสนอที่คล้ายกัน


Ads by Google