मैं यह साबित करने की कोशिश कर रहा हूं कि नोड्स के साथ एक बाइनरी हीप में बिल्कुल पत्ते हैं, यह देखते हुए कि हीप को निम्न तरीके से बनाया गया है:
प्रत्येक नए नोड को percolate up के माध्यम से डाला जाता है । इसका मतलब है कि प्रत्येक नया नोड अगले उपलब्ध बच्चे पर बनाया जाना चाहिए। मेरे कहने का मतलब यह है कि बच्चे लेवल-डाउन भरे हुए हैं, और दाएं से बाएं। उदाहरण के लिए, निम्नलिखित ढेर:
0
/ \
1 2
होता है इस क्रम में बनाया गया था: 0, 1, 2. (संख्या, बस अनुक्रमित रहे हैं वे उस नोड में आयोजित वास्तविक डेटा का कोई संकेत नहीं देते हैं।)
इसके दो महत्वपूर्ण निहितार्थ हैं:
स्तर पर कोई नोड नहीं हो सकता है बिना स्तर पूरी तरह से भरा हुआ है
क्योंकि बच्चों को दाएं से बाएं बनाया गया है, स्तर पर नोड्स के बीच कोई "रिक्त स्थान" नहीं हो सकता है , या निम्नलिखित जैसी स्थितियां:
0 / \ 1 2 / \ \ 3 4 6
(यह मेरी परिभाषा के अनुसार एक अवैध ढेर होगा।) इस प्रकार, इस ढेर के बारे में सोचने का एक अच्छा तरीका ढेर का एक सरणी कार्यान्वयन है, जहां सरणी के इंडोल में कोई "कूद" नहीं हो सकता है।
इसलिए, मैं सोच रहा था कि इंडक्शन संभवत: ऐसा करने का एक अच्छा तरीका होगा ... शायद एन के लिए एक विषम मामलों से निपटने के लिए कुछ हो। उदाहरण के लिए, कुछ इस तथ्य का उपयोग करते हुए कि इस तरह से बनाए गए ढेर में एक एन के लिए एक बच्चे के साथ एक आंतरिक नोड होना चाहिए, और विषम एन के लिए ऐसा कोई नोड नहीं है। विचार?