วันจันทร์ที่ 14 กันยายน พ.ศ. 2552

DTS 09-11/08/2009

สรุป เรื่องทรี
โครงสร้างทรี
ทรีเป็นกราฟแบบมีทิศทาง ที่มีโครงสร้างแบบลำดับชั้น ทิศทางของกราฟที่แทนทรีจะมีทิศทางจากบนลงล่าง ดังนั้นการกวาดทรี เราจึงไม่นิยมแสดงทิศทางของเส้นเชื่อม
นิยามทรี
จากรูปโครงสร้างทรี เราให้นิยามทรีในรูปแบบอื่นๆ ได้อีก เช่น การให้นิยามในรูปของการเรียกซ้ำซึ่งสอดคล้องกับลักษณะธรรมชาติ ของทรี ดังนี้ คือ ทรีประกอบด้วยโหนด R ซึ่งเรียกว่า โหนดราก (root) และ ทรีย่อย (subtree) จำนวนศูนย์ หรือมากกว่าศูนย์ ได้แก่ T1,T2,...,Tk ซึ่งแต่ละทรีย่อยจะเชื่อมกับโหนดราก (R)โดยตรงด้วยเส้นเชื่อม
การเรียกชื่อองค์ประกอบของทรี
โหนดที่อยู่ระดับบนสุดของทรี เรียกว่า โหนด R ,โหนดราก, พ่อ (father)โหนดรากของทรีย่อยของ R เรียกว่า ลูก (child) ของ R โหนดที่ไม่มีโหนดลูก เรียกว่า โหนดใบ (leaf node)เส้นเชื่อมโหนดทรี เรียกว่า กิ่ง (branch)โหนดที่มีทั้งพ่อทั้งลูก เรียกว่า โหนดกิ่ง (branch node)โหนดที่มีพ่อเดียวกัน เรียกว่า โหนดพี่น้อง (sibling) และยังอาจนิยามโหนดว่าเป็น โหนดปู่ (grandfather) หรือ โหนดหลาน (gtrandchild) ได้ในลักษณะเดียวกันเส้นทาง (path) จากโหนด n1 ไปยังโหนด nk ใดๆ จะเป็นลำดับของโหนด n1,n2,...,nkความยาว (length) ของเส้นทางจะเป็นจำนวนของเส้นเชื่อมที่อยู่ในเส้นทาง ซึ่งเท่ากับ k-1 เส้นทาง จากโหนดใดๆ ไปยังตัวเองจะมีความยาวเป็ยศูนย์ และในทรีแต่ละทรี จะมีเส้นทางหนึ่งเส้นเท่านั้นจากโหนดรากไปยัง โหนดใดๆ ความลึก (depth) เป็น ความยาวของเส้นทางจากโหนดรากไปยังโหนด n โซึ่งมีเส้นทางเดียวที่ไม่ซ้ำกัน) ความสูง (height) เป็น เส้นทางทีสุดจากโหนด n ไปยังโหนดใบถ้ามีเส้นทางจาดโหนด n1 ไปยังโหนด n2 จะเป็น บรรพบุรุษ (ancestor) ของ n2 และ n2 จะเป็น ลูกหลาน (descendant) ของ n1 ถ้า n1 != n2 ดังนั้น n1 จะเป็น บรรพบุรุษที่แท้จริง (proper ascestor) ของ n1 และ n2 ลูกหลานที่แท้จริง (proper descendant)

ทรีแบบลำดับ

ไบนารีทรี
นิยามว่า ไบนารีทรี เป็น ทรีว่าง หรือทรีที่ประกอบด้วยโหนดรากที่เรียกว่า ราก กับ ไบนารีทรี 2 ทรี เรียกว่า ทรีย่อยทางซ้าย (left subtree) และ ทรีย่อยทางขวา (right subtree) ของราก การสร้างไบนารีทรี ที่มีโหนดเดียว สามารถสร้างโหนดนั้นเป็นโหนดรากที่มีทรีย่อยทางซ้าย และทรีทางขวาเป็นทรีว่าง จะเห็นว่าไบนารีทรีแตก ต่างจากทรีทั่วไป เนื่องจากในไบนารีทรี ความหมายของคำว่า ซ้าย หรือ ขวา มีความสำคัญ ไบนารีทรี 2 โหนด ดังนั้นไบนารีทรีสามรถได้มาจากทรีแบบลำดับที่เหมาะสมกัน โดยการแยกกิ่งทางซ้ายออกจากกิ่งทางขวา
การท่องไบนารีทรี (traversal of binary tree)
ถ้าเรากำหนดให้การเยี่ยมโหนด เป็นงาน V การท่องทรีย่อยทางซ้ายเป็น L การท่องทรีย่อยทางขวาเป็น R จึงจะ ได้วิธีการท่องทรีทั้งหมด 6 วิธี
VLR LVR LRV VRL RVL RLV
การท่องทรีทั้ง 6 วิธีดังกล่าวเราจะลดเหลือ 3 วิธี ที่มีการท่องทรีย่อยทางซ้ายก่อนการท่องทรีย่อยทางขวา ส่วนอีก 3 วิธีที่เหลือ ก็เหมือนกับเป็นภาพกระจกเงาของ 3 วิธี ดังกล่าววิธีการท่องทรีย่อยทางซ้ายก่อนทรีย่อยทางขวา 3 วิธีดังกล่าว เรามีชื่อเรียกเฉพาะดังนี้
แบบ VLR เรียกว่า พรีออร์เดอร์ (preoder)
แบบ LVR เรียกว่า อินออร์เดอร์ (inorder)
แบบ LRV เรียกว่า โพสต์ออร์เดอร์(postorder)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น