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

C++ में बाइनरी ट्री में निर्दिष्ट योग के साथ रूट से सभी पथ प्रिंट करें

इस समस्या में, हमें एक बाइनरी ट्री और एक योग S दिया जाता है। और हमें पेड़ के किसी भी नोड तक रूट से शुरू होने वाला पथ खोजना होता है, जो दिए गए योग के बराबर योग देता है।

इनपुट

C++ में बाइनरी ट्री में निर्दिष्ट योग के साथ रूट से सभी पथ प्रिंट करें

Sum = 14
Output : path : 4 10
4 3 7

इस समस्या का समाधान खोजने के लिए, हमें बाइनरी ट्री के प्रीऑर्डर ट्रैवर्सल को खोजने की आवश्यकता है। और फिर वह पथ खोजें जो दिए गए योग को जोड़ता है।

उदाहरण

#include<bits/stdc++.h>
using namespace std;
struct Node{
   int key;
   struct Node *left, *right;
};
Node* insertNode(int key){
   Node* temp = new Node;
   temp->key = key;
   temp->left = temp->right = NULL;
   return (temp);
}
void printPathsUtilSum(Node* curr_node, int sum, int
sum_so_far, vector<int> &path){
   if (curr_node == NULL)
      return;
   sum_so_far += curr_node->key;
   path.push_back(curr_node->key);
   if (sum_so_far == sum ){
      for (int i=0; i<path.size(); i++)
         cout<<path[i]<<"\t";
      cout<<endl;
   }
   if (curr_node->left != NULL)
      printPathsUtilSum(curr_node->left, sum,
   sum_so_far, path);
   if (curr_node->right != NULL)
      printPathsUtilSum(curr_node->right, sum,
   sum_so_far, path);
   path.pop_back();
}
void pathWithSum(Node *root, int sum){
   vector<int> path;
   printPathsUtilSum(root, sum, 0, path);
}
int main (){
   Node *root = insertNode(4);
   root->left = insertNode(10);
   root->right = insertNode(3);
   root->right->left = insertNode(7);
   root->right->right = insertNode(1);
   root->left->left = insertNode(8);
   root->left->right = insertNode(6);
   int sum = 14;
   cout<<"Paths with the given sum are : "<<endl;
   pathWithSum(root, sum);
   return 0;
}

आउटपुट

दिए गए योग वाले पथ हैं -

4 10
4 3 7

  1. सी ++ में सापेक्ष स्थिति के साथ सभी रूट को पत्ती पथ पर प्रिंट करें

    इस समस्या में हमें एक बाइनरी ट्री दिया जाता है। और हमें जड़ से लेकर पेड़ के पत्ते तक के सभी रास्तों को प्रिंट करना होता है। साथ ही, नोड्स की सापेक्ष स्थिति दिखाने के लिए अंडरस्कोर “_” जोड़ें। आइए विषय को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं - इनपुट - आउटपुट - _ _ 3 _ 9 1 _3 9 _7 3 _ 4

  1. C++ में दिए गए परफेक्ट बाइनरी ट्री के सभी नोड्स का योग ज्ञात करें

    मान लीजिए कि हमारे पास एक सकारात्मक पूर्णांक L है, जो एक पूर्ण बाइनरी ट्री में स्तरों की संख्या का प्रतिनिधित्व करता है। इस परफेक्ट बाइनरी ट्री में लीफ नोड्स की संख्या 1 से n तक होती है। जहां n लीफ नोड्स की संख्या है। पैरेंट नोड बच्चों का योग है। हमारा काम इस परफेक्ट बाइनरी ट्री के सभी नोड्स के योग

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

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