में हटाएं-अधिकतम ऑपरेशन मैं एक न्यूनतम-अधिकतम ढेर, एक प्रकार की डबल-एंडेड प्राथमिकता कतार लागू कर रहा हूं। न्यूनतम-अधिकतम ढेर के बारे में अधिक जानकारी के लिए आप यहां here देख सकते हैं।एक न्यूनतम-अधिकतम ढेर
सम्मिलन और हटाने-मिनट संचालन के लिए कोड सरल और नेट पर उपलब्ध हैं। लेकिन, मैं एक न्यूनतम अधिकतम ढेर पर हटाने-अधिकतम ऑपरेशन को लागू करने का भी प्रयास कर रहा हूं।
प्रारंभ में, मुझे लगा कि न्यूनतम-अधिकतम ढेर में डिलीट-मैक्स अधिकतम-न्यूनतम ढेर में डिलीट-मैक्स के समान होगा (यदि हम अधिकतम तत्व वाले न्यूनतम-अधिकतम ढेर के उप-भाग पर विचार करते हैं, तो यह अधिकतम- न्यूनतम ढेर)। तो, कार्यान्वयन मिनी-अधिकतम ढेर के मिनट को हटाने के लिए सरल और समान होगा।
लेकिन, वहाँ एक समस्या है:
के रूप में, ऊपर चित्र में देखा जा सकता है, हालांकि 70 में है अधिकतम तत्व, पिछले तत्व (12) न्यूनतम-अधिकतम ढेर के है नहीं subtree 70 युक्त। तो, क्या मैं इसे 70 के हटाने के बाद बाएं subtree में बाएं अंतर को बदलने के लिए उपयोग कर सकते हैं?
हम उस तत्व का उपयोग नहीं करते और बदले में अधिकतम-न्यूनतम ढेर की नष्ट-अधिकतम प्रक्रिया का पालन करें और 20 का उपयोग खाई को बदलने के लिए, अगले तत्व ढेर में डाला 10 और हमेशा के लिए की सही बच्चे पर किया जाएगा 9
कोई सही बच्चा नहीं होगा, तो क्या कोई मेरी मदद कर सकता है?
चूंकि एक यादृच्छिक कुंजी हटाने के बारे में सवाल एक हटाए गए अधिकतम के बाद ढेर को ठीक करने के तरीके से अलग है, इसलिए मैं इसे एक अलग प्रश्न के रूप में पूछने पर विचार करता हूं। – templatetypedef
@templatetypedef इस प्रश्न को "अधिकतम तत्व को हटाने के तरीके" पर ध्यान केंद्रित करने के लिए संपादित किया गया। अब आप "न्यूनतम-अधिकतम ढेर से किसी नोड को कैसे निकालें" पर प्रस्तावित समाधान के साथ एक विशिष्ट प्रश्न प्राप्त कर सकते हैं: http://stackoverflow.com/q/39392864/3924118 – nbro