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

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


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

इसलिए, यदि इनपुट जैसा है

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

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

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

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

  • यदि नोड null है, तो -

    • लौटें

  • यदि नोड का left null है और नोड का right null है और add शून्येतर है, तो -

    • ret := ret + नोड का val

  • dfs(नोड का left, false)

  • dfs(नोड का right, true)

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

  • ret := 0

  • dfs(root, true)

  • ret लौटाएं

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

उदाहरण

#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++ में बाइनरी ट्री में अधिकतम वर्टिकल योग खोजें C++ में

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

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

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

  1. Python से बाइनरी ट्री में दिए गए नोड के दाएं वाले नोड को कैसे ढूंढें? Python से बाइनरी ट्री में दिए गए नोड के दाएं वाले नोड को कैसे ढूंढें?

    लेवल ऑर्डर ट्रैवर्सल (BFS) से दिए गए नोड के उसी लेवल पर दाएं पड़ोसी नोड को ढूंढें। एल्गोरिदम क्यू से BFS, लेवल दर लेवल प्रोसेस करें। प्रत्येक लेवल के नोड्स को temp लिस्ट में स्टोर करें। अगर टारगेट नोड u मिले तो उसका इंडेक्स नोट करें। अगर इंडेक्स अंतिम है तो None रिटर्न (दाएं कोई नहीं)। अन्यथा temp[