Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में डिलीट कीवर्ड का उपयोग करके बाइनरी ट्री को हटाना?

आइए सबसे पहले अपने बाइनरी ट्री को इंट डेटा, btree_node * rightChild, btree_node * leftChild वाले वर्ग का उपयोग करके परिभाषित करें। लेफ्टचाइल्ड और राइटचाइल्ड btree_node की ओर इशारा करते हैं। हमारी कक्षा के सभी सदस्य सार्वजनिक हैं।

class btree_node {
   public:
      int data;
      btree_node* leftChild;
      btree_node* rightChild;

एक नया नोड बनाने के लिए हमारे पास कंस्ट्रक्टर फ़ंक्शन है जो इसे नए बनाए गए नोड मान को असाइन करने के लिए पैरामीटर के रूप में int मान लेता है। लेफ्ट चाइल्ड और राइट चाइल्ड को शून्य पर सेट किया गया है।

btree_node(int data){
   this->data = data;
   this->leftChild = NULL;
   this-> = NULL;
}

क्लास डिकंस्ट्रक्टर बाइनरी ट्री के बाएँ और दाएँ बच्चे को हटाए जाने पर डिलीट कीवर्ड का उपयोग करके हटा देता है।

~btree_node(){
   delete leftChild;
   delete rightChild;
   cout << this->data << "is being deleted"<<endl;
}

ट्री के विलोपन को ट्रिगर करने के लिए हम रूट नोड पर डिलीट को कॉल करते हैं क्योंकि इसके बाएँ और दाएँ सबट्री को साथ में हटा दिया जाएगा।

delete root;

उदाहरण

आइए डिलीट कीवर्ड का उपयोग करके बाइनरी ट्री को हटाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <iostream>
using namespace std;
class btree_node {
   public:
   int data;
   btree_node* leftChild;
   btree_node* rightChild;
   btree_node(int data){
      this->data = data;
      this->leftChild = NULL;
      this->rightChild = NULL;
   }
   ~btree_node(){
      delete leftChild;
      delete rightChild;
      cout << this->data << " is being deleted"<<endl;
   }
};
int main(){
   btree_node* root = new btree_node(2);
   btree_node* node1 = new btree_node(4);
   btree_node* node2 = new btree_node(6);
   btree_node* node3 = new btree_node(8);
   btree_node* node4 = new btree_node(10);
   root->leftChild = node1;
   root->rightChild = node2;
   node1->leftChild = node3;
   node1->rightChild = node4;
   delete root;
   return 0;
}

आउटपुट

उपरोक्त कोड निम्न आउटपुट उत्पन्न करेगा -

8 is being deleted
10 is being deleted
4 is being deleted
6 is being deleted
2 is being deleted

  1. C++ में बाइनरी ट्री प्रिंट करें

    मान लीजिए कि हमें इन नियमों के आधार पर m*n 2D स्ट्रिंग सरणी में एक बाइनरी ट्री प्रदर्शित करना है - पंक्ति संख्या m दिए गए बाइनरी ट्री की ऊंचाई के समान होनी चाहिए। कॉलम संख्या n हमेशा एक विषम संख्या होनी चाहिए। रूट नोड का मान पहली पंक्ति के ठीक बीच में रखा जाना चाहिए जिसे इसे रखा जा सकता है। स्तंभ औ

  1. C++ में बाइनरी ट्री प्रूनिंग

    मान लीजिए कि हमारे पास एक बाइनरी ट्री का हेड नोड रूट है, जहां अतिरिक्त रूप से प्रत्येक नोड का मान या तो 0 या 1 है। हमें वही ट्री ढूंढना है जहां प्रत्येक सबट्री जिसमें 1 नहीं है, को हटा दिया गया है। तो अगर पेड़ जैसा है - इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - एक पुनरावर्ती विधि को

  1. सी ++ में बाइनरी ट्री में निकटतम पत्ता खोजें

    मान लीजिए, एक बाइनरी ट्री दिया गया है। इसमें विभिन्न स्तरों पर पत्ती की गांठें होती हैं। एक और पॉइंटर दिया गया है, जो एक नोड की ओर इशारा कर रहा है। हमें नुकीले नोड से निकटतम लीफ नोड की दूरी ज्ञात करनी होगी। विचार करें कि पेड़ नीचे जैसा है - यहां लीफ नोड्स 2, -2 और 6 हैं। यदि पॉइंटर नोड -5 की ओर इ