กลับไปหน้าบทความ

อ่าน 2 นาที

ต้นไม้ไบนารีแบบลูกซ้าย-พี่น้องขวา

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

ต้นไม้ไบนารีแบบลูกซ้าย-พี่น้องขวา

ต้นไม้ 6 อะรีที่แสดงในรูปต้นไม้ไบนารี

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

ในต้นไม้ไบนารีที่แทนต้นไม้หลายทางTแต่ละโหนดจะสอดคล้องกับโหนดในTและมีตัวชี้ สองตัว : ตัวหนึ่งชี้ไปยังลูกตัวแรกของโหนด และอีกตัวหนึ่งชี้ไปยังพี่น้องถัดไปในTลูกของโหนดจึงก่อตัวเป็นรายการเชื่อมโยงเดี่ยวในการหา ลูกตัวที่ kของ โหนด nจำเป็นต้องไล่ดูรายการนี้:

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

กระบวนการแปลงจากต้นไม้ 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. ประสิทธิภาพการใช้หน่วยความจำเป็นเรื่องที่น่ากังวล และ/หรือ
  2. การเข้าถึงข้อมูลลูกของโหนดแบบสุ่มนั้นไม่จำเป็น

กรณี (1) ใช้ได้เมื่อจำเป็นต้องใช้ต้นไม้หลายทางขนาดใหญ่ โดยเฉพาะอย่างยิ่งเมื่อต้นไม้มีชุดข้อมูลขนาดใหญ่ ตัวอย่างเช่น หากต้องการจัดเก็บต้นไม้ทางวิวัฒนาการการแสดงผลแบบ LCRS อาจเหมาะสม

กรณี (2) เกิดขึ้นในโครงสร้างข้อมูลเฉพาะทางซึ่งโครงสร้างต้นไม้ถูกนำมาใช้ในลักษณะที่เฉพาะเจาะจงมาก ตัวอย่างเช่น โครงสร้างข้อมูลฮีปหลายประเภทที่ใช้ต้นไม้แบบหลายทางสามารถปรับพื้นที่ให้เหมาะสมที่สุดโดยใช้การแสดงแบบ LCRS (ตัวอย่างเช่นฮีปฟิโบนาชชีฮีปจับคู่และฮีปอ่อน ) เหตุผลหลักคือในโครงสร้างข้อมูลฮีป การดำเนินการที่พบบ่อยที่สุดมักจะเป็น

  1. ถอนรากของต้นไม้และแปรรูปต้นอ่อนแต่ละต้น หรือ
  2. เชื่อมต้นไม้สองต้นเข้าด้วยกันโดยทำให้ต้นไม้ต้นหนึ่งเป็นลูกของอีกต้นหนึ่ง

การดำเนินการ (1) มีประสิทธิภาพมาก ในการแสดง LCRS จะจัดระเบียบต้นไม้ให้มีเด็กทางขวาเพราะไม่มีพี่น้อง จึงสามารถลบรากได้ง่าย

การดำเนินการ (2) ก็มีประสิทธิภาพเช่นกัน การเชื่อมต่อต้นไม้สองต้นเข้าด้วยกันนั้นง่าย[ 7 ]

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Left-child_right-sibling_binary_tree&oldid=1327018594 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ต้นไม้ไบนารีแบบลูกซ้าย-พี่น้องขวา

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

กรณีศึกษา

การแสดงผลแบบ LCRS มีประสิทธิภาพด้านพื้นที่จัดเก็บมากกว่าโครงสร้างต้นไม้แบบหลายทางแบบดั้งเดิม แต่มีข้อเสียคือการค้นหาโหนดลูกโดยใช้ดัชนีจะช้าลง ดังนั้น การแสดงผลแบบ LCRS จึงเหมาะสมกว่าหาก