मैं दो द्विआधारी खोज के पेड़ दिया गया है। उदाहरण के लिए, ए और बी इसके बाद, मैं पेड़ ए से पेड़ बी को नष्ट करने के लिए कहा गया था
हटाए जाने से, मेरा मतलब ए नोट से सभी नोड्स बी में मौजूद हटाएँ: बी जरूरी ए के एक सबट्री नहीं है
उदाहरण के लिए:
एक:
50 / \ 10 75 / / \ 1 60 90
बी:
10 / \ 1 75
जिसके परिणामस्वरूप पेड़ होना चाहिए:
50 \ 60 \ 90
: दो दृष्टिकोण मेरे मन में आए
A1:
नोड * deleteTree (नोड * एक, नोड * बी);
पेड़ बी की जड़ पेड़ एक से इस नोड (सामान्य BST विलोपन विधि द्वारा) को हटाएँ लो। अगला को दो भागों में विभाजित समस्या - बी के बाईं सबट्री और बी के अधिकार सबट्री सबट्री, recurse से प्रत्येक के लिए के लिए। बाईं सबट्री के लिए, नोड जो नोड जो नष्ट कर दिया गया पर कब्जा कर लिया रूट के रूप में पेड़ ए के लिए सही सबट्री के लिए पेड़ ए के लिए रूट के रूप में सर्वर चाहिए काम करना चाहिए, नष्ट कर दिया नोड के लिए inorder उत्तराधिकारी
A2: अन्य दृष्टिकोण एक छोटे से अजीब है। मैं पेड़ ए के inorder और अग्रिम आदेश ट्रावर्सल का पता लगाएं और प्रत्यावर्तन के साथ द्विआधारी खोज का उपयोग कर (हम न अग्रिम आदेश को संशोधित) पेड़ बी में सभी नोड्स को नष्ट पाते हैं। अंत में inorder (शेष) और अग्रिम आदेश (अपरिवर्तित) से हमारे BST recostruct।
एक समस्या: BST के लिए एक कारगर तरीका का पता लगाएं।
समस्या बी: किसी भी बाइनरी पेड़ (न केवल BST) के लिए एक कारगर तरीका का पता लगाएं।













