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

एक बाइनरी ट्री में जोड़े की गणना करें जिसका योग C++ में दिए गए मान x के बराबर है

हमें एक पूर्णांक मान और एक चर x दिया गया है और कार्य बाइनरी ट्री का निर्माण करना है और दिए गए मान x के बराबर योग वाले जोड़े ढूंढना है।

उदाहरण के लिए

इनपुट

int x =5, मान डालने के बाद जो ट्री बनाया जाएगा वह नीचे दिया गया है -

एक बाइनरी ट्री में जोड़े की गणना करें जिसका योग C++ में दिए गए मान x के बराबर है

आउटपुट

Count of pairs in a binary tree whose sum is equal to a given value x are: 2

स्पष्टीकरण

we are given with an array of integer values that is used to form a binary
tree and we will check whether there is a pair present in a binary tree whose sum
equals to the given value x which is 5. So, the pairs formed are (2, 3) and (1, 4).

इनपुट

int x =8, मान डालने के बाद जो ट्री बनाया जाएगा वह नीचे दिया गया है -

एक बाइनरी ट्री में जोड़े की गणना करें जिसका योग C++ में दिए गए मान x के बराबर है

आउटपुट

Count of pairs in a binary tree whose sum is equal to a given value x are: 3

स्पष्टीकरण

we are given with an array of integer values that is used to form a binary
tree and we will check whether there is a pair present in a binary tree whose sum
equals to the given value x which is 8. So, the pairs formed are (2, 6), (4, 4) and (5, 3).

नीचे दिए गए कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है -

  • एक नोड की संरचना बनाएं जिसमें डेटा भाग और बाएँ और दाएँ पॉइंटर्स हों जो बाएँ और दाएँ सबट्री की ओर इशारा करेंगे।

  • एक पूर्णांक मान इनपुट करें और बाएं और दाएं पॉइंटर्स के माध्यम से डेटा को नोड में दर्ज करके बाइनरी ट्री बनाने के लिए उनका उपयोग करें।

  • x का एक मान इनपुट करें जिसका उपयोग x के योग मान वाले युग्मों की गणना करने के लिए किया जाएगा।

  • यह जांचने के लिए एक बूलियन फ़ंक्शन बनाएं कि जोड़े का योग x है या नहीं।

  • फ़ंक्शन के अंदर, जांचें कि रूट न्यूल है या नहीं, फिर झूठी वापसी करें

  • जांचें कि क्या रूट पीटीआर के बराबर नहीं है और रूट का डेटा + पीटीआर का डेटा एक्स के बराबर है, तो सही लौटें।

  • रूट, पीटीआर और मान x के बाएं पॉइंटर और एक्स, पीटीआर और एक्स के दाएं पॉइंटर को पास करके चेक फ़ंक्शन को दोबारा कॉल करें। अब जांचें कि क्या कोई शर्त सच हो रही है और फिर सही लौटें।

  • अन्यथा, झूठी वापसी करें।

  • x के रूप में योग के साथ जोड़े की गिनती की गणना करने के लिए एक फ़ंक्शन total_pairs बनाएं

  • फ़ंक्शन के अंदर, जांचें कि क्या ptr NULL है और फिर 0.

  • एक तर्क के रूप में रूट, पीआरटी और एक्स पास करके फ़ंक्शन चेक को कॉल करें। यदि फ़ंक्शन सही है तो कुल युग्मों के मान को 1 से बढ़ा दें

  • कॉल फंक्शन Total_pairs रूट पास करके, ptr, x और टोटल का लेफ्ट पॉइंटर और रूट पास, ptr, x और टोटल का राइट पॉइंटर।

  • परिणाम को एक चर कुल में संग्रहीत पूर्णांक मान के रूप में प्रिंट करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
struct tree_node {
   int data;
   tree_node *left, *right;
};
tree_node* create_node(int data){
   tree_node* newNode = (tree_node*)malloc(sizeof(tree_node));
   newNode−>data = data;
   newNode−>left = newNode−>right = NULL;
}
bool check(tree_node* root, tree_node* ptr, int x){
   if(root==NULL){
      return false;
   }
   if (root != ptr && ((root−>data + ptr−>data) == x)){
      return true;
   }
   if (check(root−>left, ptr, x) || check(root−>right, ptr, x)){
      return true;
   }
   return false;
}
void total_pairs(tree_node* root, tree_node* ptr, int x, int& total){
   if(ptr == NULL){
      return;
   }
   if(check(root, ptr, x) == true){
      total++;
   }
   total_pairs(root, ptr−>left, x, total);
   total_pairs(root, ptr−>right, x, total);
}
int main(){
   int x = 5;
   int total = 0;
   tree_node* root = create_node(5);
   root−>left = create_node(2);
   root−>right = create_node(3);
   root−>left−>left = create_node(1);
   root−>left−>right = create_node(4);
   root−>right−>left = create_node(6);
   total_pairs(root, root, x, total);
   total = total / 2;
   cout<<"Count of pairs in a binary tree whose sum is equal to a given value x are: "<< total;
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Count of pairs in a binary tree whose sum is equal to a given value x are: 2

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

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

  1. एक क्रमबद्ध दोगुनी लिंक की गई सूची में ट्रिपल की गणना करें जिसका योग C++ में दिए गए मान x के बराबर है

    उदाहरण के लिए इनपुट linked list: [ 3−4−13−5−10−10−0 ] x=20 आउटपुट Count of triplets in a sorted doubly linked list whose product is equal to a given value x are: 2 स्पष्टीकरण Triplets will be: ( 3,4,13 ) and ( 10,10,0 ) इनपुट linked list: [ 4−3−1&minu

  1. दो बीएसटी से जोड़े की गणना करें जिनकी राशि सी ++ में दिए गए मान x के बराबर है

    हमें इनपुट के रूप में दो बाइनरी सर्च ट्री और एक वेरिएबल x दिया गया है। लक्ष्य प्रत्येक पेड़ से नोड्स के जोड़े को ढूंढना है ताकि नोड्स के मूल्य का योग x के बराबर हो। BST_1 से नोड 1 और BST_2 से नोड 2 लें और दोनों का डेटा भाग जोड़ें। यदि योग =x. वेतन वृद्धि की संख्या। आइए उदाहरणों से समझते हैं। इनपुट