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

सी ++ में आसन्न स्तरों वाले पेड़ से अधिकतम योग की अनुमति नहीं है

इस समस्या में, हमें एक बाइनरी ट्री दिया जाता है जिसमें धनात्मक संख्याएँ होती हैं। हमारा काम C++ में अनुमत आसन्न स्तरों वाले ट्री से अधिकतम योग खोजने के लिए एक प्रोग्राम बनाना है।

कोड विवरण

यहां, हम पेड़ के नोड का अधिकतम योग इस तरह से पाएंगे कि योग में पेड़ के दो आसन्न स्तरों से नोड्स शामिल नहीं हैं।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

आउटपुट

21

स्पष्टीकरण

प्रारंभिक स्तर के रूप में रूट लेना, योग =5 + 3 + 8 + 1 =17 मूल के उप-चाइल्ड को प्रारंभिक स्तर के रूप में लेना, योग =2 + 6 + 9 + 4 =21

समाधान दृष्टिकोण

मैक्ससम को खोजने के लिए, एक शर्त कोई आसन्न तत्व नहीं है। इसके लिए, हम रूट नोड (लेवल 1) से एक योग सेट लेंगे और दूसरा चाइल्ड नोड (लेवल 2) से। पोते-पोतियों के नोड्स को ढूंढकर अगले योग नोड्स को वर्तमान नोड से निकाला जाएगा।

इसके लिए, हम पुनरावर्ती रूप से maxSum मान प्राप्त करेंगे और फिर स्तर 1 या स्तर 2 से शुरू होने वाले योग के लिए अधिकतम योग मान परिणामी maxSum होगा।

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम,

#include<bits/stdc++.h>
using namespace std;
struct Node{
   int data;
   Node* left, *right;
   Node(int item){
      data = item;
   }
};
int getMaxSum(Node* root) ;
int findSumFromNode(Node* root){
   if (root == NULL)
      return 0;
      int sum = root->data;
   if (root->left != NULL){
      sum += getMaxSum(root->left->left);
      sum += getMaxSum(root->left->right);
   }
   if (root->right != NULL){
      sum += getMaxSum(root->right->left);
      sum += getMaxSum(root->right->right);
   }
   return sum;
}
int getMaxSum(Node* root){
   if (root == NULL)
      return 0;
      return max(findSumFromNode(root), (findSumFromNode(root->left) + findSumFromNode(root->right)));
}
int main(){
   Node* root = new Node(5);
   root->left = new Node(2);
   root->right = new Node(10);
   root->left->left = new Node(4);
   root->left->right = new Node(6);
   root->right->right = new Node(9);
   cout<<"The maximum sum from a tree with adjacent levels not allowed is "<<getMaxSum(root);
   return 0;
}

आउटपुट

The maximum sum from a tree with adjacent levels not allowed is 24

  1. C++ में दिए गए बाइनरी ट्री के सभी स्तरों के बीच गैर-पत्ती नोड्स का अधिकतम योग

    इस समस्या में हमें एक बाइनरी ट्री दिया जाता है। हमारा काम एक ऐसा प्रोग्राम बनाना है जो c++ में दिए गए बाइनरी ट्री के सभी स्तरों के बीच गैर-पत्ती नोड्स की अधिकतम राशि पायेगा। समस्या का विवरण - हम पेड़ के सभी गैर-पत्ती नोड्स और प्रत्येक स्तर के योग की गणना करेंगे और फिर अधिकतम योग प्रिंट करेंगे। समस

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

    इस समस्या में हमें एक बाइनरी ट्री दिया जाता है। हमारा काम एक प्रोग्राम बनाना है जो C++ में एक बाइनरी ट्री में अधिकतम सर्पिल योग प्राप्त करेगा। सर्पिल योग बाइनरी ट्री का, बाइनरी ट्री के स्पाइरल ट्रैवर्सल में पाए जाने वाले नोड्स का योग होता है। एक पेड़ के सर्पिल ट्रैवर्सल में, नोड्स को रूट से लीफ न

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

    इस समस्या में, हमें एक बाइनरी ट्री दिया जाता है जिसमें प्रत्येक नोड में एक मान होता है। हमारा काम एक बाइनरी ट्री की दो पत्तियों के बीच अधिकतम पथ योग खोजने के लिए एक प्रोग्राम बनाना है। यहां, हमें एक लीफ नोड से दूसरे लीफ नोड के लिए पथ फॉर्म ढूंढना होगा जो अधिकतम मूल्यों को प्रदान करेगा। इस अधिकतम यो