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

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

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 N : print c-node check c-node has R-child? Y: set R-child to c-node then go to N: return;

7 Tree Traversal 7 inorder Ex

8 Tree Traversal 8 inorder Ex จะเห็นว่า 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 N : check c-node has R-child? Y: set R-child to c-node then go to N: return;

12 Tree Traversal 12 preorder Ex จะสังเกตุเห็นว่าเมื่อนำข้อมูล ที่ได้จาก preorder ไป insert จะได้ลักษณะตาม tree

13 Tree Traversal 13 preorder Ex2 ((1+3)/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 N : check c-node has R-child? Y: set R-child to c-node then go to N: print L-child, return;

16 Tree Traversal 16 postorder Ex จะสังเกตุเห็นว่าเมื่อนำข้อมูล ที่ได้จาก postorder ( จากหลังไปหน้า ) นำไป insert จะได้ลักษณะตาม tree

17 Tree Traversal 17 postorder Ex2 ((1+3)/4)*(7+1) * / / 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 ลบ โหนด

21 Deletion node 21 deletion node Ex2 ลบ โหนด

22 Deletion node 22 deletion node Ex2 ลบ โหนด

23 Deletion node 23 deletion node Ex3 ลบ โหนด

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

25 Deletion node 25 deletion node Ex3 ลบ โหนด 4 วิธีที่

26 Deletion node 26 deletion node Ex3 ลบ โหนด 4 วิธีที่

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)) เช่น

29 AVL Tree 29 โดยต้องมีคุณสมบัติดังต่อไปนี้  เป็น binary search tree  มีเงื่อนไขสมดุล (balance) ของ tree นั่นคือ P-node มี level ของ L- child และ R-child มีความแตกต่างไม่เกิน

30 AVL Tree h = 1h = 2h = 3 h = 4

31 AVL Tree โหนด 8 ความสูงต่างกัน 0 กับ 2

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

33 AVL Tree สมดุลแต่ผิดกฏของ 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

37 AVL Tree

38 AVL Tree

39 AVL Tree

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 ของค่าต่อไปนี้ ลบโหนดต่อไปนี้จาก AVL Tree ด้านบน

47 AVL Tree double rotation

48 AVL Tree double rotation

49 AVL Tree a b c T0T0 T1T1 T2T2 T3T3 a b c T0T0 T1T1 T2T2 T3T3 single rotation

50 AVL Tree

51 AVL Tree

52 AVL Tree

53 AVL Tree

54 AVL Tree 54 ลบโหนด Ex 2

55 AVL Tree 55 ลบโหนด Ex 2

56 AVL Tree 56 ลบโหนด Ex 2

57 AVL Tree 57 ลบโหนด Ex 2

58 AVL Tree Ex

59 AVL Tree T0T0 T1T1 T2T2 T3T Ex 3

60 AVL Tree T0T0 T1T1 T2T2 T3T T0T0 T1T1 T2T2 T3T3 reconstruction

61 AVL Tree 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

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

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

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

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 set parent node of c-node to c-node go to c-node is not balance set c-node to z node set y to longest node : child L or R of z node (equal set R) set x to longest node : child L or R of y node (equal set R) check 4 reconstruction similar with a,b,c and x,y,z

68 AVL Tree T0T0 T1T1 T2T2 T3T z y x

69 AVL Tree T0T0 T1T1 T2T2 T3T3 z y x

70 Another Tree 70 splay tree 2-4 tree or 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