อ่าน 2 นาที
ต้นไม้ไบนารีแบบลูกซ้าย-พี่น้องขวา
โครงสร้างต้นไม้ แบบหลายทาง หรือ k-ary ทุกโครงสร้างที่ศึกษาใน วิทยาการคอมพิวเตอร์ ยอมรับการแสดงแทนเป็น ต้นไม้ไบนารี ซึ่งมีชื่อเรียกต่างๆ กัน เช่นการ แสดง แทนแบบลูก-พี่น้อง [ 1 ]...
ต้นไม้ไบนารีแบบลูกซ้าย-พี่น้องขวา

โครงสร้างต้นไม้ แบบหลายทางหรือk-aryทุกโครงสร้างที่ศึกษาในวิทยาการคอมพิวเตอร์ยอมรับการแสดงแทนเป็นต้นไม้ไบนารีซึ่งมีชื่อเรียกต่างๆ กัน เช่นการแสดงแทนแบบลูก-พี่น้อง[ 1 ]ต้นไม้ไบนารีแบบลูกซ้าย พี่น้องขวา [ 2 ]ต้นไม้แบบลูกโซ่คู่หรือโซ่ทายาท[ 3 ]
ในต้นไม้ไบนารีที่แทนต้นไม้หลายทางTแต่ละโหนดจะสอดคล้องกับโหนดในTและมีตัวชี้ สองตัว : ตัวหนึ่งชี้ไปยังลูกตัวแรกของโหนด และอีกตัวหนึ่งชี้ไปยังพี่น้องถัดไปในTลูกของโหนดจึงก่อตัวเป็นรายการเชื่อมโยงเดี่ยวในการหา ลูกตัวที่ kของ โหนด nจำเป็นต้องไล่ดูรายการนี้:
ขั้นตอน kth-child(n, k): เด็ก ← n.child ในขณะที่ k ≠ 0 และ child ≠ nil: เด็ก ← พี่น้องคนถัดไป k ← k − 1 ส่งคืนค่าลูก // อาจส่งคืนค่าว่าง

กระบวนการแปลงจากต้นไม้ k-ary เป็นต้นไม้ไบนารี LC-RS บางครั้งเรียกว่าการแปลงKnuth [ 4 ]ในการสร้างต้นไม้ไบนารีจากต้นไม้ k-ary ใดๆ ด้วยวิธีนี้ รากของต้นไม้เดิมจะถูกทำให้เป็นรากของต้นไม้ไบนารี จากนั้น เริ่มจากราก ลูกซ้ายสุดของแต่ละโหนดในต้นไม้เดิมจะถูกทำให้เป็นลูกซ้ายในต้นไม้ไบนารี และพี่น้องที่ใกล้ที่สุดทางด้านขวาในต้นไม้เดิมจะถูกทำให้เป็นลูกขวาในต้นไม้ไบนารี
ต้นไม้ที่มีโซ่คู่ได้รับการอธิบายโดยEdward H. Sussenguthในปี พ.ศ. 2506 [ 5 ]
การแปลงต้นไม้ k-ary ไปเป็นต้นไม้ไบนารี LC-RS นั้น ทุกโหนดจะเชื่อมโยงและจัดเรียงกับโหนดลูกทางซ้าย และโหนดที่อยู่ใกล้ที่สุดถัดไปจะเป็นโหนดพี่น้อง ตัวอย่างเช่น เรามีต้นไม้ไตรนารีดังต่อไปนี้:
1 /|\ / | \ / | \ 2 3 4 / \ | 5 6 7 / \ 8 9
เราสามารถเขียนใหม่ได้โดยย้ายโหนดลูกทางซ้ายไปไว้ที่ระดับต่ำกว่าโหนดแม่หนึ่งระดับ และวางโหนดพี่น้องไว้ถัดจากโหนดลูกที่ระดับเดียวกัน – มันจะเป็นแบบเชิงเส้น (อยู่ในแนวเดียวกัน)
1 / / / 2---3---4 / / 5---6 7 / 8---9
เราสามารถแปลงต้นไม้นี้ให้เป็นต้นไม้ไบนารีได้โดยการหมุนพี่น้องแต่ละตัวตามเข็มนาฬิกา 45° [ 6 ]
1 / 2 / \ 5 3 \ \ 6 4 / 7 / 8 \ 9
กรณีศึกษา
การแสดงผลแบบ LCRS มีประสิทธิภาพด้านพื้นที่จัดเก็บมากกว่าโครงสร้างต้นไม้แบบหลายทางแบบดั้งเดิม แต่มีข้อเสียคือการค้นหาโหนดลูกโดยใช้ดัชนีจะช้าลง ดังนั้น การแสดงผลแบบ LCRS จึงเหมาะสมกว่าหาก
- ประสิทธิภาพการใช้หน่วยความจำเป็นเรื่องที่น่ากังวล และ/หรือ
- การเข้าถึงข้อมูลลูกของโหนดแบบสุ่มนั้นไม่จำเป็น
กรณี (1) ใช้ได้เมื่อจำเป็นต้องใช้ต้นไม้หลายทางขนาดใหญ่ โดยเฉพาะอย่างยิ่งเมื่อต้นไม้มีชุดข้อมูลขนาดใหญ่ ตัวอย่างเช่น หากต้องการจัดเก็บต้นไม้ทางวิวัฒนาการการแสดงผลแบบ LCRS อาจเหมาะสม
กรณี (2) เกิดขึ้นในโครงสร้างข้อมูลเฉพาะทางซึ่งโครงสร้างต้นไม้ถูกนำมาใช้ในลักษณะที่เฉพาะเจาะจงมาก ตัวอย่างเช่น โครงสร้างข้อมูลฮีปหลายประเภทที่ใช้ต้นไม้แบบหลายทางสามารถปรับพื้นที่ให้เหมาะสมที่สุดโดยใช้การแสดงแบบ LCRS (ตัวอย่างเช่นฮีปฟิโบนาชชีฮีปจับคู่และฮีปอ่อน ) เหตุผลหลักคือในโครงสร้างข้อมูลฮีป การดำเนินการที่พบบ่อยที่สุดมักจะเป็น
- ถอนรากของต้นไม้และแปรรูปต้นอ่อนแต่ละต้น หรือ
- เชื่อมต้นไม้สองต้นเข้าด้วยกันโดยทำให้ต้นไม้ต้นหนึ่งเป็นลูกของอีกต้นหนึ่ง
การดำเนินการ (1) มีประสิทธิภาพมาก ในการแสดง LCRS จะจัดระเบียบต้นไม้ให้มีเด็กทางขวาเพราะไม่มีพี่น้อง จึงสามารถลบรากได้ง่าย
การดำเนินการ (2) ก็มีประสิทธิภาพเช่นกัน การเชื่อมต่อต้นไม้สองต้นเข้าด้วยกันนั้นง่าย[ 7 ]
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ต้นไม้ไบนารีแบบลูกซ้าย-พี่น้องขวา
โครงสร้างต้นไม้ แบบหลายทาง หรือ k-ary ทุกโครงสร้างที่ศึกษาใน วิทยาการคอมพิวเตอร์ ยอมรับการแสดงแทนเป็น ต้นไม้ไบนารี ซึ่งมีชื่อเรียกต่างๆ กัน เช่นการ แสดง แทนแบบลูก-พี่น้อง [ 1 ]...
กรณีศึกษา
การแสดงผลแบบ LCRS มีประสิทธิภาพด้านพื้นที่จัดเก็บมากกว่าโครงสร้างต้นไม้แบบหลายทางแบบดั้งเดิม แต่มีข้อเสียคือการค้นหาโหนดลูกโดยใช้ดัชนีจะช้าลง ดังนั้น การแสดงผลแบบ LCRS จึงเหมาะสมกว่าหาก