Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

การแทนค่าต้นไม้แบบ Left-Child Right-Sibling


คืออะไร?

Left-Child Right-Sibling Representation เป็นการแทนค่าต้นไม้ n-ary แบบใหม่ แทนที่จะเก็บ pointer ไปยังทุกลูก โหนดจะเก็บเพียง สอง pointers:

  1. Pointer ไปยัง ลูกคนแรก (First Child)
  2. Pointer ไปยัง พี่น้องถัดไปทันที (Immediate Next Sibling)

การแปลงนี้ไม่เพียงแต่กำจัดความจำเป็นต้องรู้จำนวนลูกล่วงหน้า แต่ยังจำกัดจำนวน pointers สูงสุดไว้ที่สอง ทำให้เขียนโค้ดง่ายขึ้นมาก

กฎการเชื่อมต่อ

  • เชื่อมลูกของพาเรนต์เดียวกันจากซ้ายไปขวา
  • พาเรนต์เชื่อมกับลูกคนแรกอย่างเดียว

ตัวอย่าง

10 | 2 -> 3 -> 4 -> 5 | | 6 7 -> 8 -> 9

ข้อดี

  • ประหยัดหน่วยความจำ – จำกัด pointers สูงสุด 2 ต่อโหนด
  • เขียนโค้ดง่ายกว่า

ข้อเสีย

  • การดำเนินการพื้นฐาน (ค้นหา/แทรก/ลบ) ใช้เวลานานกว่า – ต้องเดินทางผ่านพี่น้องทั้งหมดเพื่อหาตำแหน่งที่ถูกต้อง (ใน worst case)