1 / 31

โครงสร้างข้อมูลต้นไม้ Tree

1. Charter 6. โครงสร้างข้อมูลต้นไม้ Tree. 2. Charter 6. โครงสร้างข้อมูลต้นไม้ (Tree). ความหมาย. โครงสร้างข้อมูลแบบต้นไม้ (Tree) เป็นโครงสร้างที่ไม่เป็นแบบรายการเชิงเส้น ( Non-linear) มีลักษณะโครงสร้างข้อมูลเหมือนต้นไม้ตามธรรมชาติ คือ ลักษณะคล้ายกิ่งก้านของต้นไม้

cyma
Download Presentation

โครงสร้างข้อมูลต้นไม้ Tree

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. 1 Charter 6 โครงสร้างข้อมูลต้นไม้ Tree

  2. 2 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ความหมาย โครงสร้างข้อมูลแบบต้นไม้ (Tree) เป็นโครงสร้างที่ไม่เป็นแบบรายการเชิงเส้น (Non-linear) มีลักษณะโครงสร้างข้อมูลเหมือนต้นไม้ตามธรรมชาติ คือ ลักษณะคล้ายกิ่งก้านของต้นไม้ ประกอบด้วยจุดยอดของต้นไม้เรียกว่า ราก (Root) , จุดที่มีการแตกกิ่งก้านสาขาออกไปเรียกว่า โหนด (Node)และกิ่งก้านสาขาที่ต่อระหว่างโหนดว่า ลิงค์ (Link)

  3. 3 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ลักษณะของโครงสร้างข้อมูลแบบต้นไม้

  4. 4 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) โครงสร้างข้อมูลแบบต้นไม้ แบ่งออกมาได้ 3 แบบ คือ 1. ต้นไม้อิสระ (Free Tree) คือ กราฟอย่างง่าย (Simple Graph) มีทางเดิน เพียงชุดเดียวระหว่างจุดยอดคู่ใด ๆ 2. ต้นไม้ที่มีราก (Rooted Tree) คือ ต้นไม้ที่มีการกำหนดจุดยอดจุดหนึ่งให้ เป็นราก (Root) 3. ต้นไม้ที่มีลำดับ (Ordered Tree) คือ ต้นไม้ที่มีการจัดลำดับของสาขาแต่ละ สาขา

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

  6. 6 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ความสัมพันธ์ของโครงสร้างต้นไม้ 1. ระดับ (Level) ของจุดยอด v คือ ระยะทางตามแนวดิ่งของโหนดนั้น (Vn)ว่า อยู่ห่างจากโหนดราก (Root) เท่าไร 2. ความสูง (Height) ของโครงสร้างต้นไม้ คือ ระดับสูงสุด (HeightestLevel) ที่เกิดขึ้น 3. ดีกรีของโหนด (Level Degree) คือ จำนวนของต้นไม้ย่อย ในแต่ละโหนดว่า มีจำนวนเท่าไร

  7. 7 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ความสัมพันธ์ของโครงสร้างต้นไม้ กำหนดให้โหนดราก (Root) คือ จุดยอด V0 และ x, y, z เป็นจุดยอดในต้นไม้และ (V0 , V1 , ….,Vn ) เป็นทางเดินในต้นไม้จะกล่าวว่า 1)Vn-1เป็น บิดามารดา (Parent) ของ Vn 2) V0,…,Vn-1 เป็น บรรพบุรุษ (Ancestor) ของ Vn 3) Vnเป็น ลูก (Child) ของ Vn-1 4)ถ้า x เป็นบรรพบุรุษของ y จะได้ว่า y เป็น ผู้มาทีหลัง (Descendant) x 5) ถ้า x และ y เป็นลูกของ z จะได้ x และ y เป็น พี่น้องกัน (Siblings) 6) ถ้า x ไม่มีลูก x จะเป็น จุดยอดที่สิ้นสุด (Leaf Node) หรือใบไม้

  8. 8 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ความสัมพันธ์ของโครงสร้างต้นไม้ 7) ถ้า x ไม่ใช่จุดยอดที่สิ้นสุด x จะเป็นจุดยอดภายใน (Internal vertex) หรือ กิ่ง 8) กราฟย่อยของ T ประกอบด้วยจุดยอด x และโหนดที่มาทีหลังนับจากบรรพ บุรุษของมันทั้งหมด โดยมีโหนด x เป็นราก และเรียกว่า ต้นไม้ย่อยของ ต้นไม้ที่มีราก x

  9. 9 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ความสัมพันธ์ของโครงสร้างต้นไม้

  10. 10 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ป่า (Forest) คือ โครงสร้างต้นไม้ที่นำเอาโหนดราก (Root) ออกไปเหลือเฉพาะต้นไม้หรือกิ่งของโครงสร้างต้นไม้นั้น ๆ ป่าที่ประกอบด้วยต้นไม้ A ,B และ X

  11. 11 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) โครงสร้างต้นไม้แบบทวิภาค (Binary Tree) โครงสร้างต้นไม้ทวิภาค (Binary Tree) คือ ต้นไม้ที่มีโหนดราก (Root) และทุกจุดยอดอาจมีลูก (Child) ทางซ้าย, ลูกทางขวา, ลูกทางซ้ายและลูกทางขวา หรือไม่มีลูกเลย โครงสร้างต้นไม้ทวิภาคแบบสมบูรณ์ (Complete Binary Tree) คือ โครงสร้างต้นไม้ทวิภาคที่ทุกจุดยอดมีลูกทั้งสองด้านหรือไม่มีลูกเลย

  12. 12 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) แสดงโครงสร้างต้นไม้ทวิภาค (Binary Tree)

  13. 13 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) โครงสร้างต้นไม้ทั่วไป (General Trees) โครงสร้างต้นไม้ทั่วไป คือ เซตจำกัด T ที่มีสมาชิกเรียกว่าโหนด ซึ่งประกอบด้วยคุณลักษณะดังนี้ 1. T เป็นต้นไม้ว่าง (Null Tree หรือ Empty Tree) หรือ 2. T มีสมาชิกพิเศษ คือ โหนด R อยู่หนึ่งโหนดที่เรียกว่า Root Node 3. สมาชิกที่เหลือของ T อาจประกอบด้วยต้นไม้ย่อยที่มีจำนวนสมาชิกเป็นศูนย์หรือมากกว่า ได้แก่ T1,T2 , …, Tท

  14. 14 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) การแทนโครงสร้างต้นไม้ คือ การแทนความสัมพันธ์ที่เกิดขึ้นจากรูปโครงสร้างต้นไม้ด้วยรูปที่สามารถประมวลผลด้วยคอมพิวเตอร์ ซึ่งแบ่งออกเป็น 2 วิธี ได้แก่ 1. การแทนโครงสร้างต้นไม้ด้วยโครงสร้างอาร์เรย์ (Array) 2. การแทนโครงสร้างต้นไม้ด้วยโครงสร้างรายการเชื่อมโยง (Linked List)

  15. 15 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) การแทนโครงสร้างต้นไม้ด้วยโครงสร้างอาร์เรย์ การแทนโครงสร้างต้นไม้ด้วยโครงสร้างอาร์เรย์จะต้องใช้อาร์เรย์อย่างน้อย 3 ชุดสำหรับเป็นที่เก็บของข้อมูลและพอยน์เตอร์ที่ชี้ไปยังโหนดลูกทางด้านซ้ายและด้านขวา

  16. 16 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) แสดงการแทนโครงสร้าง ต้นไม้ด้วยอาร์เรย์

  17. 17 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) การแทนโครงสร้างต้นไม้ทวิภาค (Binary Trees) การแทนด้วยอาร์เรย์จะใช้อาร์เรย์ที่ขนานกันจำนวน 3 ชุด คือ INFO, LEFT และRIGHT และตัวแปร ROOT ถ้าให้ K คือตำแหน่งของโหนดจะได้ความสัมพันธ์ ดังนี้ 1. INFO [K] เก็บส่วนที่เป็นข้อมูลของโหนด N 2. LEFT [K] เก็บตำแหน่งของ Left ของโหนด N 3. RIGHT [K] เก็บตำแหน่งของ Right Child ของโหนด N 4. ROOT เก็บตำแหน่งของ Root ของต้นไม้ T

  18. 18 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) แสดงการแทนโครงสร้าง ต้นไม้ทวิภาคด้วยอาร์เรย์

  19. 19 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) การแทนโครงสร้างต้นไม้ด้วย Linked List คือ การใช้โครงสร้างข้อมูล Linked List มาแทนต้นไม้ โดยแต่ละโหนดจะประกอบด้วย 3 ส่วน คือ Left , Info ,Right โดย ส่วน Left จะเป็นตัวเชื่อมไปยังต้นไม้ย่อยในระดับถัดไปที่อยู่ทางซ้าย , Right จะชี้ไปยังต้นไม้ย่อยในระดับถัดไปทางด้านขวา Info จะเก็บข้อมูลของโหนด และต้นไม้ย่อยที่ว่าง (ไม่มีต้นไม้ย่อยต่ออยู่) แสดงด้วย X สำหรับค่า NULL

  20. 20 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) แสดงการแทนโครงสร้างต้นไม้ทวิภาคด้วยรายการเชื่อมโยง

  21. 21 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) การเข้าถึงข้อมูลในโครงสร้างต้นไม้ทวิภาค การเข้าถึงข้อมูลในโครงสร้างต้นไม้ทวิภาคมีหลายวิธีด้วยกัน แต่วิธีหลักๆ ที่สำคัญมี 3 วิธี ดังนี้ 1. การเข้าถึงข้อมูลแบบพรีออร์เดอร์ (Preorder) 2. การเข้าถึงข้อมูลแบบอินออร์เดอร์ (Inorder) 3. การเข้าถึงข้อมูลแบบโพสท์ออร์เดอร์ (Preorder)

  22. 22 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree)

  23. 23 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) การกำหนดทิศทางการเข้าถึงต้นไม้

  24. 24 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) การเข้าถึงข้อมูลในโครงสร้างต้นไม้ทวิภาค สังเกตว่า แต่ละวิธีจะประกอบด้วยขั้นตอนที่เหมือนกัน และต้นไม้ย่อยทางซ้ายของ Root ของถูกประมวลผลก่อนต้นไม้ย่อยทางขวามือ วิธีการทั้ง 3 บางครั้งเรียกว่า โหนด-ซ้าย-ขวา (Node-Left-Right : NLR) ,ซ้าย-โหนด-ขวา (Left-Node-Right : LNR) และ ซ้าย-ขวา-โหนด (Left-Right-Node : LRN)แต่ละวิธีการเป็นการกำหนดแบบ เรียกตัวเอง (Recursive) เนื่องจากอัลกอริทึมมีการค้นหาต้นไม้ย่อยในลำดับที่กำหนด ซึ่งต้องใช้โครงสร้างสแตกเมื่อมีการทำงานด้วยคอมพิวเตอร์

  25. 25 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ลักษณะต้นไม้แบบนิยาม Recursive

  26. 26 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) Preorder = * + a – b c / - d e - + f g h Inorder = a + b - c * d – e / f + g – h Postorder = a b c - + d e – f g + h - / *

  27. 27 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) โครงสร้างต้นไม้แบบ THREADED TREE คือ การนำไบนารีทรีมีการปรับปรุงแก้ไขโดยวิธีการดำเนินการแบบรายการเชื่อมโยง โดยมีการเพิ่มโหนดพิเศษที่เรียกว่า โหนดนำ (Header Node) ไว้ที่จุดเริ่มต้นของ T และกำหนดให้ HEAD เป็นพอยน์เตอร์ที่ชี้ไปยัง Header Node และพอยน์เตอร์ทางซ้ายของ Header Node จะชี้ไปยัง Root ของทรี

  28. 28 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) แสดงโครงสร้างต้นไม้ที่มี Header Node

  29. 29 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) รูปแบบโครงสร้างต้นไม้แบบ THREADED TREE แบ่งออกเป็น 3 แบบ ดังนี้ 1. การเชื่อมโยงทางเดียว (One-Way Threading) 2. การเชื่อมโยง 2 ทาง (Two-Way Threading) 3. การเชื่อมโยง 2 ทาง ที่มีโหนดนำ (Two-Way Threading with header node)

  30. 30 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) การเข้าถึงโครงสร้างต้นไม้แบบ THREADED TREE แบบ Preorder

  31. 31 LPTR LTHREAD DATA RTHREAD RPTR Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) โดยกำหนดให้ LTHREAD = 1 แสดง left thread link LTHREAD = 0 แสดง left structural link RTHREAD = 1 แสดง right thread link RTHREAD = 0 แสดง right structural link แสดงโครงสร้างโหนดใน Threaded Tree

More Related