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

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

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

उदाहरण के लिए

इनपुट-1:

<मजबूत> C++ में दिए गए बाइनरी ट्री के लेफ्ट लीफ नोड्स का योग ज्ञात कीजिए

आउटपुट:

15

स्पष्टीकरण: दिए गए इनपुट बाइनरी ट्री में, सभी लेफ्ट लीफ नोड्स का योग 9+4+2 =15 है। तो, आउटपुट 15 है।

इस समस्या को हल करने का तरीका

हमारे पास एक बाइनरी ट्री है और कार्य सभी लीफ नोड्स का योग ज्ञात करना है जो इसके माता-पिता के लिए छोड़े गए हैं।

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

  • एक बाइनरी ट्री लें जिसमें रूट नोड्स हों और उसके बाएं बच्चे के साथ-साथ दायां बच्चा इनपुट के रूप में।
  • एक पूर्णांक फ़ंक्शन leftLeafSum(treenode*root) रूट नोड को इनपुट के रूप में लेता है और सभी लीफ नोड्स का योग देता है जो उसके पैरेंट को छोड़ दिया जाता है।
  • यदि रूट नोड खाली है या NULL है, तो 'शून्य' लौटाएं अन्यथा रूट नोड के बाएं नोड की जांच करें।
  • यदि रूट नोड के बाएं नोड में कोई संतान नहीं है, तो दाएं नोड की दोबारा जांच करें।
  • बाएं बच्चे और दाएं बच्चे के लिए राशि दोबारा लौटाएं।

उदाहरण

#include<bits/stdc++.h>
using namespace std;
struct treenode {
   int data;
   treenode * left;
   treenode * right;
};
struct treenode * createNode(int d) {
   struct treenode * root = new treenode;
   root -> data = d;
   root -> left = NULL;
   root -> right = NULL;
   return root;
}
int leftLeafSum(treenode * root) {
   if (root == NULL) {
      return 0;
   }
   if (root -> left and!root -> left -> left and!root -> left -> right) {
      return root -> left -> data + leftLeafSum(root -> right);
   }
   return leftLeafSum(root -> left) + leftLeafSum(root -> right);
}
int main() {
   struct treenode * root = NULL;
   root = createNode(4);
   root -> left = createNode(2);
   root -> right = createNode(2);
   root -> left -> right = createNode(7);
   root -> left -> left = createNode(5);
   root -> right -> left = createNode(5);
   root -> right -> right = createNode(7);
   int sum = leftLeafSum(root);
   cout << sum << endl;
   return 0;
}

उपरोक्त कोड को चलाने से आउटपुट इस प्रकार उत्पन्न होगा,

आउटपुट

10

स्पष्टीकरण: बाएं नोड्स में लीफ नोड्स 5 और 5 हैं जो उनके माता-पिता के लिए छोड़ दिए गए हैं, इस प्रकार सभी लीफ नोड का योग =10 है।


  1. सी ++ में बाइनरी ट्री में निकटतम पत्ता खोजें

    मान लीजिए, एक बाइनरी ट्री दिया गया है। इसमें विभिन्न स्तरों पर पत्ती की गांठें होती हैं। एक और पॉइंटर दिया गया है, जो एक नोड की ओर इशारा कर रहा है। हमें नुकीले नोड से निकटतम लीफ नोड की दूरी ज्ञात करनी होगी। विचार करें कि पेड़ नीचे जैसा है - यहां लीफ नोड्स 2, -2 और 6 हैं। यदि पॉइंटर नोड -5 की ओर इ

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

    मान लें कि हमारे पास कुछ नोड्स के साथ एक बाइनरी ट्री है। हमें रूट और दूसरे नोड u के बीच की दूरी का पता लगाना है। मान लीजिए पेड़ नीचे जैसा है: अब बीच की दूरी (रूट, 6) =2, पथ की लंबाई 2, के बीच की दूरी (रूट, 8) =3 आदि। इस समस्या को हल करने के लिए, हम बाएँ और दाएँ सबट्री में नोड को खोजने के लिए एक

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

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