310 likes | 763 Views
1. Charter 6. โครงสร้างข้อมูลต้นไม้ Tree. 2. Charter 6. โครงสร้างข้อมูลต้นไม้ (Tree). ความหมาย. โครงสร้างข้อมูลแบบต้นไม้ (Tree) เป็นโครงสร้างที่ไม่เป็นแบบรายการเชิงเส้น ( Non-linear) มีลักษณะโครงสร้างข้อมูลเหมือนต้นไม้ตามธรรมชาติ คือ ลักษณะคล้ายกิ่งก้านของต้นไม้
E N D
1 Charter 6 โครงสร้างข้อมูลต้นไม้ Tree
2 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ความหมาย โครงสร้างข้อมูลแบบต้นไม้ (Tree) เป็นโครงสร้างที่ไม่เป็นแบบรายการเชิงเส้น (Non-linear) มีลักษณะโครงสร้างข้อมูลเหมือนต้นไม้ตามธรรมชาติ คือ ลักษณะคล้ายกิ่งก้านของต้นไม้ ประกอบด้วยจุดยอดของต้นไม้เรียกว่า ราก (Root) , จุดที่มีการแตกกิ่งก้านสาขาออกไปเรียกว่า โหนด (Node)และกิ่งก้านสาขาที่ต่อระหว่างโหนดว่า ลิงค์ (Link)
3 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ลักษณะของโครงสร้างข้อมูลแบบต้นไม้
4 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) โครงสร้างข้อมูลแบบต้นไม้ แบ่งออกมาได้ 3 แบบ คือ 1. ต้นไม้อิสระ (Free Tree) คือ กราฟอย่างง่าย (Simple Graph) มีทางเดิน เพียงชุดเดียวระหว่างจุดยอดคู่ใด ๆ 2. ต้นไม้ที่มีราก (Rooted Tree) คือ ต้นไม้ที่มีการกำหนดจุดยอดจุดหนึ่งให้ เป็นราก (Root) 3. ต้นไม้ที่มีลำดับ (Ordered Tree) คือ ต้นไม้ที่มีการจัดลำดับของสาขาแต่ละ สาขา
5 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ความสัมพันธ์ของโครงสร้างต้นไม้ 1. ราก (Root) เป็นโหนดบนสุด 2. ใต้โหนดรากและในระดับเดียวกันจะใส่จุดยอดซึ่งทางเดินห่างจากราก (Root) เป็นระยะทาง 1 หน่วย 3. ใต้จุดยอดเหล่านี้และในระดับเดียวกันจะใส่จุดยอดที่ทางเดินห่างจากราก (Root) เป็นระยะทาง2หน่วย 4. ทำเช่นนี้เรื่อยไปจนหมดโครงสร้าง
6 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ความสัมพันธ์ของโครงสร้างต้นไม้ 1. ระดับ (Level) ของจุดยอด v คือ ระยะทางตามแนวดิ่งของโหนดนั้น (Vn)ว่า อยู่ห่างจากโหนดราก (Root) เท่าไร 2. ความสูง (Height) ของโครงสร้างต้นไม้ คือ ระดับสูงสุด (HeightestLevel) ที่เกิดขึ้น 3. ดีกรีของโหนด (Level Degree) คือ จำนวนของต้นไม้ย่อย ในแต่ละโหนดว่า มีจำนวนเท่าไร
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 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ความสัมพันธ์ของโครงสร้างต้นไม้ 7) ถ้า x ไม่ใช่จุดยอดที่สิ้นสุด x จะเป็นจุดยอดภายใน (Internal vertex) หรือ กิ่ง 8) กราฟย่อยของ T ประกอบด้วยจุดยอด x และโหนดที่มาทีหลังนับจากบรรพ บุรุษของมันทั้งหมด โดยมีโหนด x เป็นราก และเรียกว่า ต้นไม้ย่อยของ ต้นไม้ที่มีราก x
9 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ความสัมพันธ์ของโครงสร้างต้นไม้
10 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ป่า (Forest) คือ โครงสร้างต้นไม้ที่นำเอาโหนดราก (Root) ออกไปเหลือเฉพาะต้นไม้หรือกิ่งของโครงสร้างต้นไม้นั้น ๆ ป่าที่ประกอบด้วยต้นไม้ A ,B และ X
11 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) โครงสร้างต้นไม้แบบทวิภาค (Binary Tree) โครงสร้างต้นไม้ทวิภาค (Binary Tree) คือ ต้นไม้ที่มีโหนดราก (Root) และทุกจุดยอดอาจมีลูก (Child) ทางซ้าย, ลูกทางขวา, ลูกทางซ้ายและลูกทางขวา หรือไม่มีลูกเลย โครงสร้างต้นไม้ทวิภาคแบบสมบูรณ์ (Complete Binary Tree) คือ โครงสร้างต้นไม้ทวิภาคที่ทุกจุดยอดมีลูกทั้งสองด้านหรือไม่มีลูกเลย
12 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) แสดงโครงสร้างต้นไม้ทวิภาค (Binary Tree)
13 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) โครงสร้างต้นไม้ทั่วไป (General Trees) โครงสร้างต้นไม้ทั่วไป คือ เซตจำกัด T ที่มีสมาชิกเรียกว่าโหนด ซึ่งประกอบด้วยคุณลักษณะดังนี้ 1. T เป็นต้นไม้ว่าง (Null Tree หรือ Empty Tree) หรือ 2. T มีสมาชิกพิเศษ คือ โหนด R อยู่หนึ่งโหนดที่เรียกว่า Root Node 3. สมาชิกที่เหลือของ T อาจประกอบด้วยต้นไม้ย่อยที่มีจำนวนสมาชิกเป็นศูนย์หรือมากกว่า ได้แก่ T1,T2 , …, Tท
14 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) การแทนโครงสร้างต้นไม้ คือ การแทนความสัมพันธ์ที่เกิดขึ้นจากรูปโครงสร้างต้นไม้ด้วยรูปที่สามารถประมวลผลด้วยคอมพิวเตอร์ ซึ่งแบ่งออกเป็น 2 วิธี ได้แก่ 1. การแทนโครงสร้างต้นไม้ด้วยโครงสร้างอาร์เรย์ (Array) 2. การแทนโครงสร้างต้นไม้ด้วยโครงสร้างรายการเชื่อมโยง (Linked List)
15 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) การแทนโครงสร้างต้นไม้ด้วยโครงสร้างอาร์เรย์ การแทนโครงสร้างต้นไม้ด้วยโครงสร้างอาร์เรย์จะต้องใช้อาร์เรย์อย่างน้อย 3 ชุดสำหรับเป็นที่เก็บของข้อมูลและพอยน์เตอร์ที่ชี้ไปยังโหนดลูกทางด้านซ้ายและด้านขวา
16 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) แสดงการแทนโครงสร้าง ต้นไม้ด้วยอาร์เรย์
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 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) แสดงการแทนโครงสร้าง ต้นไม้ทวิภาคด้วยอาร์เรย์
19 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) การแทนโครงสร้างต้นไม้ด้วย Linked List คือ การใช้โครงสร้างข้อมูล Linked List มาแทนต้นไม้ โดยแต่ละโหนดจะประกอบด้วย 3 ส่วน คือ Left , Info ,Right โดย ส่วน Left จะเป็นตัวเชื่อมไปยังต้นไม้ย่อยในระดับถัดไปที่อยู่ทางซ้าย , Right จะชี้ไปยังต้นไม้ย่อยในระดับถัดไปทางด้านขวา Info จะเก็บข้อมูลของโหนด และต้นไม้ย่อยที่ว่าง (ไม่มีต้นไม้ย่อยต่ออยู่) แสดงด้วย X สำหรับค่า NULL
20 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) แสดงการแทนโครงสร้างต้นไม้ทวิภาคด้วยรายการเชื่อมโยง
21 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) การเข้าถึงข้อมูลในโครงสร้างต้นไม้ทวิภาค การเข้าถึงข้อมูลในโครงสร้างต้นไม้ทวิภาคมีหลายวิธีด้วยกัน แต่วิธีหลักๆ ที่สำคัญมี 3 วิธี ดังนี้ 1. การเข้าถึงข้อมูลแบบพรีออร์เดอร์ (Preorder) 2. การเข้าถึงข้อมูลแบบอินออร์เดอร์ (Inorder) 3. การเข้าถึงข้อมูลแบบโพสท์ออร์เดอร์ (Preorder)
22 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree)
23 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) การกำหนดทิศทางการเข้าถึงต้นไม้
24 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) การเข้าถึงข้อมูลในโครงสร้างต้นไม้ทวิภาค สังเกตว่า แต่ละวิธีจะประกอบด้วยขั้นตอนที่เหมือนกัน และต้นไม้ย่อยทางซ้ายของ Root ของถูกประมวลผลก่อนต้นไม้ย่อยทางขวามือ วิธีการทั้ง 3 บางครั้งเรียกว่า โหนด-ซ้าย-ขวา (Node-Left-Right : NLR) ,ซ้าย-โหนด-ขวา (Left-Node-Right : LNR) และ ซ้าย-ขวา-โหนด (Left-Right-Node : LRN)แต่ละวิธีการเป็นการกำหนดแบบ เรียกตัวเอง (Recursive) เนื่องจากอัลกอริทึมมีการค้นหาต้นไม้ย่อยในลำดับที่กำหนด ซึ่งต้องใช้โครงสร้างสแตกเมื่อมีการทำงานด้วยคอมพิวเตอร์
25 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) ลักษณะต้นไม้แบบนิยาม Recursive
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 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) โครงสร้างต้นไม้แบบ THREADED TREE คือ การนำไบนารีทรีมีการปรับปรุงแก้ไขโดยวิธีการดำเนินการแบบรายการเชื่อมโยง โดยมีการเพิ่มโหนดพิเศษที่เรียกว่า โหนดนำ (Header Node) ไว้ที่จุดเริ่มต้นของ T และกำหนดให้ HEAD เป็นพอยน์เตอร์ที่ชี้ไปยัง Header Node และพอยน์เตอร์ทางซ้ายของ Header Node จะชี้ไปยัง Root ของทรี
28 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) แสดงโครงสร้างต้นไม้ที่มี Header Node
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 Charter 6 โครงสร้างข้อมูลต้นไม้ (Tree) การเข้าถึงโครงสร้างต้นไม้แบบ THREADED TREE แบบ Preorder
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