(सामान्य रूप में) को हटाए जाने की विनिमेय नहीं है। यहाँ प्रति एक है:
4
/ \
3 7
/
6
क्या होगा अगर हम 4 और फिर 3 हटाना चाहते हैं?
जब हम 4 हटाते हैं, तो हम नए रूट के रूप में 6 मिलती है:
6
/ \
3 7
3 हटाया जा रहा है पेड़ परिवर्तन नहीं करता है, लेकिन हमें इस देता है:
6
\
7
क्या होगा अगर हम 3 और फिर 4 हटाना चाहते हैं?
जब हम 3 हटाना पेड़ परिवर्तन नहीं करता है:
4
\
7
/
6
हालांकि, जब हम अब 4 हटाते हैं, तो नया रूट 7 हो जाता है:
7
/
6
दो परिणामस्वरूप पेड़, ही नहीं हैं इसलिए विलोपन विनिमेय नहीं है।
अद्यतन करें
मैं प्रतिबंध नहीं पढ़ा था कि यह तब होता है जब आप हमेशा 2 बच्चों के साथ एक नोड को हटा दें। मेरे समाधान सामान्य स्थिति के लिए है। जब मैं एक जवाबी उदाहरण मिल सकता है / मैं इसे अपडेट करेंगे।
कोई अन्य अपडेट
मैं ठोस सबूत की जरूरत नहीं है, लेकिन मैं एक अनुमान खतरे लिए जा रहा हूँ:
सामान्य स्थिति में, आप विलोपन अलग तरह से है कि क्या आप दो बच्चों, एक बच्चा, या कोई बच्चे हैं के आधार पर संभाल। जवाबी उदाहरण मैं प्रदान की में, मैं पहले दो बच्चों और फिर एक बच्चे के साथ एक नोड के साथ एक नोड को हटा दें। उसके बाद, मैं कोई बच्चा नहीं है और फिर एक बच्चे के साथ एक और नोड के साथ एक नोड को हटा दें।
केवल दो बच्चों के साथ नोड्स को हटाने के विशेष मामले में, आप इस मामले में जहां दोनों नोड्स एक ही उप पेड़ में हैं (अगर वे विभिन्न उप-वृक्षों में हैं, क्योंकि इससे कोई फर्क नहीं होगा पर विचार करना चाहते है, आप सुनिश्चित हो सकते हैं कि समग्र संरचना हटाने के आदेश) के आधार पर बदल नहीं होंगे। क्या तुम सच में यह सिद्ध करना है कि क्या एक ही उप पेड़, जहां प्रत्येक नोड दो बच्चों मामलों है, में नोड्स का विलोपन के आदेश।
दो नोड्स ए और बी जहां एक बी के एक पूर्वज है तो फिर तुम आगे सवाल को परिष्कृत हो सकता है पर विचार करें:
विलोपन विनिमेय जब आप एक द्विआधारी खोज वृक्ष जो एक दूसरे के एक पूर्वज-वंशज रिश्ता है से दो नोड्स का विलोपन (यह है कि वे एक ही उप पेड़ में हैं अर्थ होगा) पर विचार कर रहे है?
जब आप एक नोड को हटाने के लिए आप सही उप पेड़ पार न्यूनतम तत्व को खोजने के लिए (के एक मान लीजिए),। इस नोड एक पत्ता नोड हो जाएगा और B के बराबर कभी नहीं हो सकता (क्योंकि बी दो बच्चे हैं और एक पत्ता नोड नहीं किया जा सकता)। इसके बाद आप इस पत्ती नोड के मूल्य के साथ एक के मान की जगह लेंगे। इसका मतलब है कि पेड़ से केवल संरचनात्मक परिवर्तन पत्ती नोड के मूल्य के साथ एक की कीमत के प्रतिस्थापन, और पत्ती नोड के नुकसान है।
एक ही प्रक्रिया है कि बी के लिए शामिल किया गया है, तो आप नोड के मूल्य की जगह और एक पत्ता नोड की जगह। तो सामान्य रूप में, जब आप दो बच्चों के साथ एक नोड हटाने के लिए, केवल संरचनात्मक परिवर्तन नोड आप हटा रहे हैं के मूल्य में परिवर्तन, और पत्ती नोड जो मूल्य आप स्थानापन्न के रूप में प्रयोग कर रहे हैं है का विलोपन है ।
तो सवाल यह परिष्कृत है:
आप गारंटी ले सकते हैं कि आप हमेशा (जब आप हमेशा दो बच्चों के साथ एक नोड हटा रहे हैं) हटाए जाने के आदेश की परवाह किए बिना एक ही प्रतिस्थापन नोड मिलेगा?
इस सवाल का जवाब (मुझे लगता है कि) हां में है। क्यूं कर? यहाँ कुछ टिप्पणियों हैं:
- मान लीजिए कि आप वंशज नोड पहली और पूर्वज नोड दूसरे को नष्ट करते हैं। उप पेड़ कि संशोधित किया गया था जब आप वंशज नोड को नष्ट कर दिया है नहीं पूर्वज नोड के सही बच्चे के बाईं उप पेड़ में। यह है कि इस उप-वृक्ष अप्रभावित रहता है इसका मतलब है। क्या यह भी मतलब हटाए जाने के आदेश की परवाह किए बिना, दो है विभिन्न उप पेड़ संशोधित कर रहे हैं और इसलिए आपरेशन विनिमेय है।
- फिर, मान लीजिए कि आप वंशज नोड पहली और पूर्वज नोड दूसरे को नष्ट मान लीजिए। उप पेड़ कि संशोधित किया गया था जब आप वंशज नोड को नष्ट कर दिया है पूर्वज नोड के सही बच्चे के बाईं उप पेड़ में। लेकिन यहाँ भी, वहाँ कोई ओवरलैप है। कारण जब आप वंशज नोड पहले हटाने के बाद आप वंशज नोड के के बाईं उप पेड़ को देखो है सही बच्चे। जब आप तो पूर्वज नोड हटाते हैं, तो होगा कभी नहीं नीचे जाना है कि उप पेड़ आप जाएगा के बाद से हमेशा बाईं ओर जा रहा आप पूर्वज नोड का दाहिना बच्चे की बाईं उप पेड़ दर्ज करने के बाद। तो फिर, क्या आप पहले उसे हटा नहीं की परवाह किए बिना आप विभिन्न उप-पेड़ संशोधित कर रहे हैं और इसलिए यह आदेश कोई फर्क नहीं पड़ता दिखाई देता है।
- यदि आप पूर्वज नोड पहले हटा सकते हैं और आप पाते हैं कि कम से कम नोड वंशज नोड का एक बच्चा है एक और मामला है। इसका मतलब है कि वंशज नोड एक बच्चे के साथ खत्म हो जाएगा, और एक बच्चे को हटाने तुच्छ है। अब इस मामले में जहां इस परिदृश्य में, आप वंशज नोड नष्ट कर दिया पहले विचार करें। तो फिर तुम अपने सही बच्चे के साथ वंशज नोड के मूल्य की जगह लेंगे और उसके बाद सही बच्चे को हटा दें। फिर जब आप पूर्वज नोड हटाते हैं, तो आप को खोजने के अंत में एक ही न्यूनतम नोड (पुराने नष्ट कर दिया नोड के बाएं बच्चे है, जो भी प्रतिस्थापित नोड के बाएं बच्चा है)। किसी भी तरह से, आप एक ही संरचना के साथ खत्म।
यह एक कठोर सबूत नहीं है, इन बस कुछ टिप्पणियों मैं बनाया है कर रहे हैं। हर तरह से, छेद प्रहार करने में संकोच न!