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

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


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

इनपुट

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

योग = 14 आउटपुट: पथ: 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. C++ में सापेक्ष स्थितियों के साथ रूट से लीफ तक के सभी पथ प्रिंट करें C++ में सापेक्ष स्थितियों के साथ रूट से लीफ तक के सभी पथ प्रिंट करें

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

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

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

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

    दिए गए बाइनरी ट्री में प्रोग्राम को दिए गए कई पथों में से रूट से लीफ तक का सबसे छोटा पथ ढूंढना होगा। चूंकि हम ट्री को बाएं से दाएं ट्रैवर्स करते हैं, इसलिए यदि रूट से लीफ तक कई सबसे छोटे पथ हैं तो प्रोग्राम ट्री के बाएं तरफ पहले ट्रैवर्स किए गए सबसे छोटे पथ को प्रिंट करेगा। हम एक कतार (queue) का उपय