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

C++ में बाइनरी ट्री के दाहिने पत्तों का योग ज्ञात करने का कार्यक्रम

मान लीजिए कि हमारे पास एक बाइनरी ट्री है, तो हमें दिए गए बाइनरी ट्री में सभी दाएँ पत्तों का योग ज्ञात करना है।

तो, अगर इनपुट पसंद है

C++ में बाइनरी ट्री के दाहिने पत्तों का योग ज्ञात करने का कार्यक्रम

तब आउटपुट 17 होगा, क्योंकि बाइनरी ट्री में दो दाहिने पत्ते हैं, जिनका मान क्रमशः 7 और 10 है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • फ़ंक्शन dfs() को परिभाषित करें, यह नोड लेगा, जोड़ देगा,

  • यदि नोड शून्य है, तो -

    • वापसी

  • यदि नोड का बायां भाग शून्य है और नोड का दायां शून्य है और जोड़ गैर-शून्य है, तो -

    • रिट :=रिट + नोड का वैल

  • dfs (नोड के बाएँ, असत्य)

  • dfs (नोड का अधिकार, सत्य)

  • मुख्य विधि से, निम्न कार्य करें -

  • रिट:=0

  • dfs(रूट, ट्रू)

  • वापसी रिट

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class TreeNode{
   public:
   int val;
   TreeNode *left, *right;
   TreeNode(int data){
      val = data;
      left = NULL;
      right = NULL;
   }
};
class Solution {
   public:
   int ret = 0;
   void dfs(TreeNode* node, bool add){
      if(!node)
      return ;
      if(!node−>left && !node->right && add){
         ret += node−>val;
      }
      dfs(node−>left, false);
      dfs(node−>right, true);
   }
   int solve(TreeNode* root) {
      ret = 0;
      dfs(root, true);
      return ret;
   }
};
main(){
   Solution ob;
   TreeNode *root = new TreeNode(3);
   root−>left = new TreeNode(9);
   root−>right = new TreeNode(10);
   root−>left−>left = new TreeNode(15);
   root−>left−>right = new TreeNode(7);
   cout << (ob.solve(root));
}

इनपुट

TreeNode *root = new TreeNode(3);
root−>left = new TreeNode(9);
root−>right = new TreeNode(10);
root−>left−>left = new TreeNode(15);
root−>left−>right = new TreeNode(7);

आउटपुट

17

  1. C++ में बाइनरी ट्री में अधिकतम लम्बवत योग ज्ञात कीजिए

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है। कार्य ऊर्ध्वाधर क्रम ट्रैवर्सल में सभी नोड्स के अधिकतम योग को प्रिंट करना है। तो अगर पेड़ नीचे जैसा है - लंबवत क्रम ट्रैवर्सल इस प्रकार है - 4 2 1 + 5 + 6 = 12 3 + 8 = 11 7 9 यहां अधिकतम 12 है। दृष्टिकोण सरल है। हम वर्टिकल ऑर्डर ट्रैवर्सल करेंगे, फिर योग

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

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

  1. पायथन का उपयोग करके बाइनरी ट्री में दाईं ओर नोड का पता लगाने का कार्यक्रम

    मान लीजिए, हमें एक बाइनरी ट्री प्रदान किया जाता है। हमें एक नोड (u नाम दिया गया) के लिए एक पॉइंटर भी दिया जाता है और हमें दिए गए नोड के ठीक दाईं ओर स्थित नोड को खोजना होता है। दिए गए नोड के दाईं ओर स्थित नोड समान स्तर पर रहना चाहिए और दिया गया नोड या तो लीफ नोड या आंतरिक नोड हो सकता है। तो, अगर इनप