1 / 94

Data Structure and Algorithm

Data Structure and Algorithm . โครงสร้างข้อมูลแบบทรี (Tree). ความรู้พื้นฐาน เกี่ยวกับ Tree. Tree. โครงสร้างข้อมูลที่ได้เรียนมาในบทก่อน ๆ จะพบว่า ข้อมูลแต่ละตัวมี ความสัมพันธ์ ในรูป เชิงเส้น หรือแบบเชิง 1 มิติ

sloan
Télécharger la présentation

Data Structure and Algorithm

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Data Structure and Algorithm โครงสร้างข้อมูลแบบทรี (Tree)

  2. ความรู้พื้นฐาน เกี่ยวกับ Tree

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

  4. Tree • รูปแบบของ tree ถูกนำมาประยุกต์ในหลาย ๆ ด้านเพื่อใช้ ในการแสดงความสัมพันธ์ระหว่างข้อมูล ตัวอย่างการใช้ tree 1 เพื่อใช้ในการแสดงความสัมพันธ์ของครอบครัว 2. แสดงแผนผังการจัดบุคคลในบริษัท โดยจัดลำดับตามตำแหน่ง 3. การจัดทำสารบัญหนังสือในแบบโครงสร้างของ tree

  5. Tree

  6. นิยามของ Tree 1. ในเชิง Math มีลักษณะเป็นรีเคอร์ซีฟ 2. Tree เป็น set จำกัดTที่มีสมาชิก 1 Node หรือ มากกว่า ซึ่งมี node พิเศษ 1 node เรียก Root 3. Node อื่นๆ ที่เหลือจะถูกแบ่งออกเป็นกลุ่มที่ไม่มีสมาชิกร่วมกัน สมมุติชื่อคือ T1 ,, T2 ,… Tn ( n >= 0 )โดยมีโครงสร้างเป็นต้นไม้ย่อยเรียกSubtreeเมื่อnคือจำนวนกลุ่มต้นไม้ย่อย

  7. นิยามของ Tree ต้นไม้ย่อย T1 ต้นไม้ย่อย T2 V0เป็นroot ของ Tree ที่มีสมาชิกคือ {V1 , V2 , V3 , V4 , V5 , V6 , V7 }

  8. นิยามของ Tree ต้นไม้ย่อย T2 ต้นไม้ย่อย T1 V1 เป็นroot ของ Tree ที่มีสมาชิกคือ{ V3 , V4 }

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

  10. นิยามของ Tree ความสัมพันธ์ ระหว่าง Root nodeกับ Sub Tree เป็นลักษณะ พ่อ กับลูก (Parent and child ) • พ่อ(Father) คือ node ที่เป็นroot ของ Tree หรือ root ของ Subtree • ลูก(child) คือ node ที่เชื่อมโยงต่อจาก node ที่เป็นพ่อ

  11. นิยามของ Tree พ่อ (Father) พ่อ (Father) ลูก(child) ลูก(child) A D B C T E F H G

  12. คำศัพท์สำหรับ 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

  13. คำศัพท์สำหรับ Tree Brother Node = {BCD} {EF} {HT} A Branch/Edge Branch Node D B C T E F H G Leaf Node 1. Brother Node : Node ที่มีพ่อเดียวกัน 2. Branch / Edge: กิ่งเป็นเส้นเชื่อม ระหว่างพ่อกับลูก

  14. คำศัพท์สำหรับ Tree Degree: จำนวนลูก หรือ ต้นไม้ย่อยของแต่ละ node A 3 D B C 2 2 1 T E F H G Leaf Node 4. Leaf node (ลีฟโหนด) คือ Node ที่ไม่มีลูก Degree = 0 5. Branch NodeNode ที่ไม่ใช่ Root, Leaf Degreeไม่เป็น 0

  15. คำศัพท์สำหรับ Tree 5. Descendant ลูกหลาน / Successor ผู้มาทีหลัง Descendant ของ node x คือ ทุก node ที่ link ต่อ x ลงมาทั้งหมด A Descendant ของ A D B C H F G T E

  16. คำศัพท์สำหรับ Tree Immediate Successor / Direct Descendant/ Son ลูกหลานโดยตรง A Direct Descendant ของA D B C H F G T E

  17. คำศัพท์สำหรับ Tree 6. Ancestor บรรพบุรุษ / Predecessor ผู้มาก่อน Ancestor ของ node x คือ ทุก node ที่ Link อยู่เหนือ x A B และ A คือ Ancestor ของ E และ F D Direct Ancestor ของ E และ F B C H F G T E

  18. คำศัพท์สำหรับ Tree 7. Immediate Predecessor / Direct Ancestor / Father A B คือ Father ของ E และ F D Direct Ancestor ของ E และ F B C H F G T E

  19. คำศัพท์สำหรับ Tree 8 . Level ของnode (ระดับ) - ระยะทางตามแนวดิ่งของ node ว่าอยู่ห่างจาก root เท่าไร - เป็นหมายเลขแสดงระดับของnodeในต้นไม้ - ถ้า node มีระดับ L -> node ที่เชื่อมต่อจากมันมีระดับL+1 9. Height หรือ ระดับ( Level )ที่สูงสุดของ tree

  20. คำศัพท์สำหรับ Tree Height : 3 Level : 1 . . . . . . . . . . . . . . A Level : 2 . . . D B C H Level : 3 F G T E

  21. คำศัพท์สำหรับ Tree Height : 3 หนังสือบางเล่ม Level : 0 . . . . . . . . . . . . . . A Level : 1. . . D B C H Level : 2 F G T E

  22. คำศัพท์สำหรับ Tree Level 1 R Root Level …. Z Y S X V W U T Ancestors of ……. Level … Father of …. Descendant of ….. Level ….. Son of …. Height of a tree = ……………………... Brother node of……. Subtree ของ node …….

  23. คำศัพท์สำหรับ Tree Level 1 R Root Level 2 Z X Y V U S W T Internal node Ancestors of V Level 3 Father of V Leaf Descendant of T Level 4 Son of T Notation: Node, children, edge, parent, ancestor, descendant, path, depth, height, level, leaf node, subtree. depth of a node =จำนวน ของ edge จาก root - node Height of a tree =1+ max(depth of a node) = 4 Subtree Siblings of U

  24. คำศัพท์สำหรับ Tree R X W V U S Y Z Y X W V U S Z T T 9. ป่า(Forest)

  25. Ordered Tree Ordered Tree (ออร์เดอร์ทรี)หรือต้นไม้ที่มีแบบแผน • Tree ที่ node ใด ๆ มีsubtreeหรือdegree ตั้งแต่ 2 ขึ้นไป และลำดับจากซ้ายไปขวา ของ tree ย่อยมีความหมาย • มีความสัมพันธ์เชิงตำแหน่ง • ถ้าลำดับจากซ้ายไปขวา ของ tree ย่อยไม่มีความหมายเรียกว่า Oriented tree

  26. Ordered Tree Ordered Tree A A B C C B D D J E I F

  27. Tree ตัวอย่างโครงสร้างทรี • นิพจน์ทางคณิตศาสตร์ • Decision Trees • การแยกประเภทหนังสือในห้องสมุด

  28. นิพจน์ทางคณิตศาสตร์ เราสามารถใช้โครงสร้างของ Treeในการแทนนิพจน์ทางคณิตศาสตร์ โดยจัดให้ 1.node สาขา (Branch node) เป็น node สำหรับเครื่องหมายการคำนวณ 2. ส่วนnode ปลาย (Leaf node) เป็น node สำหรับตัวถูกกระทำของเครื่องหมายการคำนวณนั้น ๆ

  29. Tree V1 * V2 –(V3 + V4 ^ V5 )

  30. Decision Trees • Tree ชนิดนี้มักเกิดขึ้นในการประยุกต์เกี่ยวกับการเล่นเกม หรืองานเกี่ยวกับการสร้างแบบจำลองเหตุการณ์ ตัวอย่างการนำไปใช้ในการเล่นเกม โดยแต่ละ nodeของ tree จะใช้แทนการตัดสินใจว่าจะเล่นต่อไปอย่างไร tree ที่ใช้แทนการเล่นเกมนี้เรียก ทรีเกม (Game Tree) ซึ่งขนาดของทรีเกม มักจะมีขนาดใหญ่

  31. Decision Trees

  32. การแยกประเภทหนังสือในห้องสมุดการแยกประเภทหนังสือในห้องสมุด • ระบบการจัดทำCatalog ของห้องสมุด ส่วนใหญ่จะใช้โครงสร้างของทรี เช่นตัวอย่างระบบดิววี่ ( Dewey Decimal System ) ซึ่งจะจัดเป็นระบบลดหลั่นลงมา โดยเริ่มจากความรู้กว้าง ๆ ก่อน แล้วแยกออกเป็นแผนกย่อยตามสาขาวิชาที่ละเอียดขึ้น หรือลักษณะการจัดทำสารบัญหนังสือ ที่มีการจัดทำเป็นหัวข้อเรื่องใหญ่ และมีหัวข้อย่อยในแต่ละเรื่อง เป็นต้น

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

  34. Array Implementation Linked Lists Implementation

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

  36. Binary Tree • ในแต่ละ node จะมี subtree หรือ degree ได้ไม่เกิน 2 • ถ้ามี subtree เดียว ต้องระบุด้วยว่า เป็น node ทางซ้ายหรือทางขวา ของRoot T = NULL

  37. Binary Tree T = NULL มองในเชิงMath คำจำกัดความของBinary tree จะเป็นrecursive • เป็น set จำกัดของ node ที่อาจเป็นset ว่างหรือประกอบด้วย node ที่เรียกRoot และnode ที่เหลือแบ่งออกเป็น subtree ที่ไม่มี node ร่วมกัน โดย subtree ก็จะเป็นbinary tree ด้วย • Left และ Right Subtree

  38. Binary Tree Binary Tree Example Max depth = 3 Height = 4 Right son Left son

  39. Binary Tree Complete Binary Trees ความสัมพันธ์ระหว่างระดับและจำนวน node n = 2l-1 เมื่อ l คือ max level 15 5 16 3 12 1 20

  40. Binary Tree Position 0 1 2 3 4 5 6 7 8 9 10 11 Parent -- 0 0 1 1 2 2 3 3 4 4 5 Left Child 1 3 5 7 9 11 -- -- -- -- -- -- Right Child 2 4 6 8 10 -- -- -- -- -- -- -- Left Sibling -- -- 1 -- 3 -- 5 -- 7 -- 9 -- Right Sibling -- 2 -- 4 -- 6 -- 8 -- 10 -- -- Array Implementation

  41. Binary Tree Linked List Implementation DATA Lson Rson

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

  43. การแปลง Tree ไปเป็น Binary Tree การแปลงtreeไปเป็นbinary tree • โครงสร้าง Tree มักมี degree > 2 • ดังนั้นการสร้างจึงต้องกำหนด เขตเชื่อมโยงให้พอ • บาง node ใช้ครบ บาง node ไม่ครบ

  44. การแปลง Tree ไปเป็น Binary Tree R Z S U V W X Y T

  45. การแปลง Tree ไปเป็น Binary Tree ขั้นตอน 1. ให้เชื่อม node ที่มีพ่อเดียวกัน ( node พี่น้อง) เข้าด้วยกัน - ลบเส้นเชื่อมโยงจาก node ที่เป็นพ่อไปยังลูก ๆ ออกให้หมด ยกเว้น ลูกที่อยู่ตำแหน่งซ้ายสุด 2. เลือก son ทางซ้ายและขวา ของแต่ละ node - son ทางซ้าย คือ node ที่อยู่ใต้ node นั้น - son ทางขวา คือ node ที่อยู่ข้าง ๆ (ระดับเดียวกัน / Brother )

  46. การแปลง Tree ไปเป็น Binary Tree A D B C T G H F E เริ่มต้น 1.ให้เชื่อม nodeที่มีพ่อเดียวกัน ( node พี่น้อง) เข้าด้วยกัน

  47. การแปลง Tree ไปเป็น Binary Tree A ขั้นที่ 1 D B C T G H F E 1.ให้เชื่อม nodeที่มีพ่อเดียวกัน ( node พี่น้อง) เข้าด้วยกัน

  48. การแปลง Tree ไปเป็น Binary Tree A ขั้นที่ 1-1 D B C T G H F E 1. ลบเส้นเชื่อมโยงจาก node ที่เป็นพ่อไปยังลูก ๆ ออกให้หมด ยกเว้น ลูกที่อยู่ตำแหน่งซ้ายสุด

  49. การแปลง Tree ไปเป็น Binary Tree A B C D F E G H T ขั้นที่ 2 เลือก son ทางซ้ายและขวา ของแต่ละ node - son ทางซ้าย คือ node ที่อยู่ใต้ node นั้น - sonทางขวา คือ node ที่อยู่ข้าง ๆ (ระดับเดียวกัน / Brother )

  50. แบบฝึกหัด A จงแปลง Tree ให้เป็น Binary Tree B C D 1 3 2 4 5 9 7 8 6 10 A B C E F G D J K L M

More Related