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

การเริ่มต้น Interval Heap


ฮีปช่วงเวลาจะเหมือนกับฮีปต่ำสุด-สูงสุดที่ฝังซึ่งแต่ละโหนดประกอบด้วยสององค์ประกอบ มันถูกกำหนดให้เป็นต้นไม้ไบนารีที่สมบูรณ์ซึ่ง

  • องค์ประกอบด้านซ้ายมีขนาดเล็กกว่าหรือเท่ากับองค์ประกอบด้านขวา
  • ทั้งสององค์ประกอบกำหนดช่วงเวลาที่ปิด
  • ช่วงเวลาที่แสดงโดยโหนดอื่นที่ไม่ใช่ root เป็นช่วงเวลาย่อยของโหนดหลัก
  • องค์ประกอบทางด้านซ้ายมือแสดงถึงฮีปขั้นต่ำ
  • องค์ประกอบทางด้านขวามือแสดงถึงฮีปสูงสุด

ขึ้นอยู่กับจำนวนขององค์ประกอบ อนุญาตสองกรณี -

  • จำนวนองค์ประกอบเท่ากัน:ในกรณีนี้ แต่ละโหนดมีสององค์ประกอบคือ a และ b โดยมี a ≤ b ทุกโหนดจะถูกแทนด้วยช่วงเวลา [a, b].
  • องค์ประกอบจำนวนคี่:ในกรณีนี้ แต่ละโหนดที่ไม่ใช่โหนดสุดท้ายมีองค์ประกอบสองรายการที่แสดงโดยช่วง [a, b] ในขณะที่โหนดสุดท้ายจะมีองค์ประกอบเดียวและแสดงโดยช่วง [a, b] .

Interval heap อาจถูกเตรียมใช้งานโดยใช้กลยุทธ์แบบเดียวกับที่ใช้ในการเริ่มต้น heap ธรรมดา - ทำงานในแบบของเราจากด้านล่างของ heap ไปที่ root เพื่อให้แน่ใจว่าแต่ละ sub tree จะถูกแสดงเป็นช่วง heap สำหรับทรีย่อยแต่ละต้น อันดับแรกให้เรียงลำดับองค์ประกอบในรูท จากนั้นแทรกจุดสิ้นสุดด้านซ้ายของรูทของทรีย่อยนี้อีกครั้งโดยใช้กลยุทธ์การแทรกซ้ำที่ใช้สำหรับฟังก์ชัน removeMin จากนั้นจึงแทรกจุดสิ้นสุดทางขวาของรูทของทรีย่อยนี้อีกครั้งโดยใช้กลยุทธ์ที่ใช้สำหรับฟังก์ชัน removeMax