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

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


इस समस्या में, हमें एक बाइनरी ट्री और एक नंबर K दिया जाता है और हमें ट्री में सभी पथ प्रिंट करने होते हैं जिनमें पथ में नोड्स का योग k के बराबर होता है।

यहां, पेड़ का पथ पेड़ के किसी भी नोड से शुरू हो सकता है और किसी भी नोड पर समाप्त हो सकता है। पथ हमेशा रूट नोड से लीफ नोड तक निर्देशित होना चाहिए। पेड़ के नोड्स का मान सकारात्मक, नकारात्मक या शून्य हो सकता है।

आइए समस्या को समझने के लिए एक उदाहरण लेते हैं -

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

कश्मीर =5

आउटपुट -

1 3 1
3 2
1 4

इस समस्या को हल करने के लिए, हम प्रत्येक नोड को पेड़ के रूट नोड के रूप में मानेंगे और अस्थायी रूट से अन्य नोड्स तक का रास्ता खोजेंगे जो कि K के मानों को जोड़ते हैं।

हम पथ के सभी नोड्स को वेक्टर में संग्रहीत करते हैं और k के मूल्यांकन के लिए योग मान की जांच करते हैं।

उदाहरण

एल्गोरिथम के कार्यान्वयन को दिखाने के लिए कार्यक्रम -

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   Node *left,*right;
   Node(int x){
      data = x;
      left = right = NULL;
   }
};
void printPath(const vector<int>& v, int i) {
   for (int j=i; j<v.size(); j++)
      cout<<v[j]<<"\t";
   cout<<"\n";
}
void findKSumPath(Node *root, vector<int>& path, int k) {
   if (!root)
      return;
   path.push_back(root->data);
   findKSumPath(root->left, path, k);
   findKSumPath(root->right, path, k);
   int f = 0;
   for (int j=path.size()-1; j>=0; j--){
      f += path[j];
      if (f == k)
         printPath(path, j);
   }
   path.pop_back();
}
int main() {
   Node *root = new Node(1);
   root->left = new Node(3);
   root->left->left = new Node(1);
   root->left->right = new Node(2);
   root->right = new Node(4);
   root->right->right = new Node(7);
   int k = 5;
   cout<<"Paths with sum "<<k<<" are :\n";
   vector<int> path;
   findKSumPath(root, path, k);
   return 0;
}

आउटपुट

Paths with sum 5 are −
1 3 1
3 2
1 4

  1. C++ में K के पत्तों वाले बाइनरी ट्री में सभी नोड्स प्रिंट करें

    इस समस्या में, हमें एक बाइनरी ट्री और एक पूर्णांक K दिया जाता है और हमें बाइनरी ट्री के उन सभी नोड्स को प्रिंट करना होता है जिनके चाइल्ड सबट्री में K पत्ते होते हैं। बाइनरी ट्री एक विशेष पेड़ है जिसके प्रत्येक नोड में अधिकतम दो नोड (एक/दो/कोई नहीं) होते हैं। लीफ नोड बाइनरी ट्री का नोड ट्री के अंत

  1. बाइनरी सर्च ट्री के सभी विषम नोड्स को C++ में प्रिंट करें

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

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

    बाइनरी ट्री को देखते हुए, कार्य 1 से n तक के नोड में संग्रहीत प्रत्येक कुंजी से जुड़े स्तर को प्रिंट करना है उपरोक्त पेड़ में, नोड्स हैं - 10 लेवल 13 पर और 211 लेवल 2140 पर, 162, 100 और 146 लेवल 3 पर कुंजी को देखते हुए प्रोग्राम को उस विशेष कुंजी के स्तर को प्रिंट करना होगा। उदाहरण एल्गोरिदम न