Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
บทที่ 5โครงสร้างข้อมูลแบบต้นไม้
(TREE DATA STRUCTURE)
โครงสรา้งขอ้มูลแบบตน้ไม ้•เป็นโครงสรา้งไม่เชงิเสน้ (NON LINEAR) มลีกัษณะคลา้ยกิง่กา้นตน้ไม ้
แตกกิง่กา้นออกไป เชน่เดยีวกบัธรรมชาตขิองขา่วสารขอ้มูล
•ตน้ไมแ้ตกกิง่จากลา่งไปบน แตโ่ครงสรา้งขอ้มูลในคอมพวิเตอรจ์ะ
กลบัหวั จดุทีแ่ตกกิง่ออกไป เรยีกวา่โหนด (NODE) ขา่วสารเก็บอยู่ที่
โหนด
•จดุเช ือ่มโหนดเรยีกวา่ลงิค(์LINK)
นิยามโครงสรา้งตน้ไม ้
•มโีหนดพเิศษเรยีกว่า รากหรอืรตู (ROOT NODE), R
•โหนดอืน่ๆ ทีไ่ม่ใชร่ตู ถกูแบ่งย่อยออกเป็น N กลุม่ แตล่ะกลุม่ไม่มี
โหนดรว่มกนัเลย แตล่ะกลุม่ก็เป็นตน้ไมเ้หมอืนกนั แต่เรยีกวา่เป็น
ตน้ไมย้่อย (SUB TREE)
โครงสรา้งตน้ไม ้
• R คอืรตูโหนดของตน้ไมย้่อย A,B,C,D
• A คอืรตูโหนดของตน้ไมย้่อย E, F, G
• F คอืรตูโหนดของตน้ไมย้่อย J
• B คอืรตูโหนดของตน้ไมย้่อย H และ I
ดกีรขีองโหนด (LEVEL DEGREE)
คอืจาํนวนตน้ไมย่้อยของโหนดน้ัน
• A มดีกีรเีป็น 3
• B มดีกีรเีป็น 2
• F มดีกีรเีป็น 1
• C,D,E,G,H,I,J มดีกีรเีป็น 0
โหนดทีเ่ป็นใบ (LEAF NODE)
คือโหนดที่มีดีกรีเป็น 0 ส่วนโหนดที่มีดีกรีมากกว่า 0
เรียกว่า โหนดภายใน
( INTERIOR/BRANCH NODE )
• A,B,F เป็นโหนดภายใน
• C,D,E,G,H,I,J เป็นโหนดใบ
ป่า (FOREST)
• คือ โครงสร้างต้นไม้ทีน่ําเอาโหนดราก (ROOT) ออกไปเหลือเฉพาะต้นไม้หรือกิ่งของ
โครงสร้างต้นไม้นั้น ๆ
โครงสร้างต้นไม้แบบทวิภาค (BINARY TREE)
•โครงสรา้งตน้ไมท้วภิาค (BINARY TREE) คอื ตน้ไมท้ีม่โีหนดราก
(ROOT) และทุกจดุยอดอาจมลีกู(CHILD) ทางซา้ย, ลกูทางขวา, ลกู
ทางซา้ยและลกูทางขวา หรอืไม่มลีกูเลย
•โครงสรา้งตน้ไมท้วภิาคแบบสมบรูณ ์(COMPLETE BINARY TREE) คอื
โครงสรา้งตน้ไมท้วภิาคทีท่กุจดุยอดมลีกูทัง้สองดา้นหรอืไม่มลีกูเลย
โครงสรา้งตน้ไมท้ัว่ไป (GENERAL TREES)โครงสรา้งตน้ไมท้ัว่ไป คอื เซตจาํกดั T ทีม่สีมาชกิเรยีกวา่โหนด ซึง่
ประกอบดว้ยคณุลกัษณะดงันี้
•T เป็นตน้ไมว้า่ง (NULL TREE หรอื EMPTY TREE) หรอื
•T มสีมาชกิพเิศษ คอื โหนด R อยู่หน่ึงโหนดทีเ่รยีกวา่ ROOT NODE
•สมาชกิทีเ่หลอืของ T อาจประกอบดว้ยตน้ไมย่้อยทีม่จีาํนวนสมาชกิ
เป็นศนูยห์รอืมากกวา่ ไดแ้ก ่T1 , T2 , ... , Tท
การแทนโครงสรา้งตน้ไม ้
•คอื การแทนความสมัพนัธท์ีเ่กดิขึน้จากรปูโครงสรา้งตน้ไมด้ว้ยรปูที่
สามารถประมวลผลดว้ยคอมพวิเตอร ์ซ ึง่แบ่งออกเป็น 2 วธิี
1.การแทนโครงสร้างต้นไม้ด้วยโครงสร้างอาร์เรย์ (ARRAY)•การแทนโครงสรา้งตน้ไมด้ว้ยโครงสรา้งอารเ์รยจ์ะตอ้งใชอ้ารเ์รยอ์ย่าง
นอ้ย
3 ชดุสาํหรบัเป็นทีเ่ก็บของขอ้มูลและพอยนเ์ตอรท์ีช่ ีไ้ปยงัโหนดลกู
ทางดา้น
ซา้ยและดา้นขวา
2. การแทนโครงสร้างต้นไม้ด้วยโครงสร้างรายการเชื่อมโยง (LINKED LIST)•การใชโ้ครงสรา้งขอ้มูล LINKED LIST มาแทนตน้ไมโ้ดยแตล่ะโหนดจะ
ประกอบดว้ย 3 สว่น คอืLEFT , INFO ,RIGHT โดย สว่น LEFT จะเป็น
ตวัเช ือ่มไปยงัตน้ไมย่้อยในระดบัถดัไปทีอ่ยู่ทางซา้ย , RIGHT จะชีไ้ปยงั
ตน้ไมย้่อยในระดบัถดัไปทางดา้นขวา INFO จะเก็บขอ้มูลของโหนด
และตน้ไมย่้อยทีว่า่ง (ไม่มตีน้ไมย้่อยตอ่อยู่) แสดงดว้ย X สาํหรบัคา่
NULL
โครงสรา้งตน้ไมแ้บบ THREADED TREE
•การนําไบนารทีรมีกีารปรบัปรงุแกไ้ขโดยวธิกีารดาํเนินการแบบ
รายการเชือ่มโยง โดยมกีารเพิม่โหนดพเิศษทีเ่รยีกวา่ โหนดนํา
(HEADER NODE) ไวท้ีจ่ดุเร ิม่ตน้ของ T และกาํหนดใหH้EAD เป็นพอยน์
เตอรท์ีช่ ีไ้ปยงั HEADER NODE และพอยนเ์ตอรท์างซา้ยของ HEADER
NODE จะชีไ้ปยงั ROOT ของทรี