ฉันพยายามที่จะพิสูจน์ว่ากองไบนารีที่มี nodes มีออกจากใบเนื่องจากกองถูกสร้างขึ้นด้วยวิธีต่อไปนี้:
แต่ละโหนดใหม่จะถูกแทรกผ่านขึ้นกรอง ซึ่งหมายความว่าแต่ละโหนดใหม่จะต้องสร้างที่ลูกที่มีอยู่ถัดไป สิ่งที่ฉันหมายถึงคือเด็ก ๆ จะถูกเลื่อนระดับจากซ้ายไปขวา ตัวอย่างเช่นฮีปต่อไปนี้:
0
/ \
1 2
จะต้องมีการสร้างตามลำดับนี้: 0, 1, 2 (ตัวเลขเป็นเพียงดัชนีพวกเขาไม่ได้บ่งชี้ถึงข้อมูลจริงที่เก็บอยู่ในโหนดนั้น)
สิ่งนี้มีนัยสำคัญสองประการ:
ไม่มีโหนดใดในระดับไม่มีระดับที่เต็มไปอย่างสมบูรณ์
เนื่องจากเด็กถูกสร้างจากซ้ายไปขวาจึงไม่มี "ช่องว่าง" ระหว่างโหนดในระดับหรือสถานการณ์ดังต่อไปนี้:
0 / \ 1 2 / \ \ 3 4 6
(นี่จะเป็นฮีปที่ผิดกฎหมายตามคำจำกัดความของฉัน) ดังนั้นวิธีที่ดีที่จะคิดว่าฮีปนี้คือการใช้อาเรย์ของฮีปที่ไม่สามารถมี "การข้าม" ในอาเรย์ของอาร์เรย์ได้
ดังนั้นฉันคิดว่าอุปนัยอาจเป็นวิธีที่ดีในการทำสิ่งนี้ ... บางทีบางสิ่งบางอย่างที่ต้องจัดการกับแม้แต่กรณีแปลก ๆ สำหรับ n ตัวอย่างเช่นการเหนี่ยวนำโดยใช้ความจริงที่ว่าแม้กองที่สร้างขึ้นในแบบนี้จะต้องมีโหนดภายในที่มีลูกหนึ่งคนสำหรับคู่ n และไม่มีโหนดดังกล่าวสำหรับคี่ n ไอเดีย?