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

C++ . का उपयोग करके बाइनरी ट्री में पत्ती पथ के पहले सबसे छोटे रूट को प्रिंट करने का कार्यक्रम

इस ट्यूटोरियल में, हम एक बाइनरी ट्री में पहली सबसे छोटी रूट टू लीफ पाथ को प्रिंट करने के लिए एक प्रोग्राम पर चर्चा करेंगे।

इसमें, हमें अलग-अलग मानों वाला एक बाइनरी ट्री दिया जाएगा, और हमें दिए गए बाइनरी ट्री में रूट नोड से लीफ नोड तक का सबसे छोटा रास्ता खोजना होगा।

इसे हल करने के लिए, हम एक बाइनरी ट्री में लेवल ऑर्डर ट्रैवर्सल करने के लिए कतार का उपयोग कर सकते हैं और नोड्स को सबसे छोटे पथ में स्टोर कर सकते हैं। इसके लिए, एक बार जब हम अंतिम स्तर के लिए सबसे बाएं नोड पर पहुंच जाते हैं, तो हम कतार से मान प्राप्त करते हैं और सबसे छोटा पथ प्रिंट करते हैं।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
struct Node{
   struct Node* left;
   struct Node* right;
   int data;
};
struct Node* create_node(int data){
   struct Node* temp = new Node;
   temp->data = data;
   temp->left = NULL;
   temp->right = NULL;
   return temp;
}
void print_spath(int Data, unordered_map<int, int> parent){
   if (parent[Data] == Data)
      return;
   print_spath(parent[Data], parent);
   cout << parent[Data] << " ";
}
void leftmost_path(struct Node* root){
   queue<struct Node*> q;
   q.push(root);
   int LeafData = -1;
   struct Node* temp = NULL;
   unordered_map<int, int> parent;
   parent[root->data] = root->data;
   while (!q.empty()){
      temp = q.front();
      q.pop();
      if (!temp->left && !temp->right){
         LeafData = temp->data;
      break;
      }
      else{
         if (temp->left){
            q.push(temp->left);
            parent[temp->left->data] = temp->data;
         }
         if (temp->right) {
            q.push(temp->right);
            parent[temp->right->data] = temp->data;
         }
      }
   }
   print_spath(LeafData, parent);
   cout << LeafData << " ";
}
int main(){
   struct Node* root = create_node(21);
   root->left = create_node(24);
   root->right = create_node(35);
   root->left->left = create_node(44);
   root->right->left = create_node(53);
   root->right->right = create_node(71);
   root->left->left->left = create_node(110);
   root->left->left->right = create_node(91);
   root->right->right->left = create_node(85);
   leftmost_path(root);
   return 0;
}

आउटपुट

21 35 53

  1. बाइनरी ट्री के नोड्स को प्रिंट करें क्योंकि वे C++ प्रोग्रामिंग में लीफ नोड बन जाते हैं।

    एक बाइनरी ट्री को देखते हुए, हमें इसके लीफ नोड्स को प्रिंट करना होगा और फिर हमें उन लीफ नोड्स को हटाना होगा और तब तक दोहराना होगा जब तक कि ट्री में कोई नोड न बचे। उदाहरण तो समस्या का परिणाम होना चाहिए - 6 7 9 13 14 3 4 2 1 दृष्टिकोण हमने एक तरीका अपनाया है जहां हम डीएफएस लागू कर रहे है

  1. C++ प्रोग्रामिंग में बाइनरी ट्री में पहला सबसे छोटा रूट टू लीफ पाथ प्रिंट करें।

    बाइनरी ट्री को देखते हुए प्रोग्राम को दिए गए कई रास्तों में से रूट से लीफ तक के सबसे छोटे रास्ते का पता लगाना चाहिए। चूँकि हम पेड़ को बाएँ से दाएँ पार करते हैं, इसलिए यदि जड़ से पत्ती तक कई छोटे रास्ते हैं, तो प्रोग्राम पेड़ के बाईं ओर सबसे छोटा रास्ता सबसे पहले ट्रैवर्स करेगा। हम एक कतार का उपयोग

  1. पायथन का उपयोग करके बाइनरी ट्री की जड़ को बदलने का कार्यक्रम

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