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

C++ में बाइनरी ट्री में अधिकतम स्तर योग खोजें


इस समस्या में, हमें एक बाइनरी ट्री दिया गया है जिसमें सकारात्मक और नकारात्मक मान हैं। हमारा कार्य बाइनरी ट्री में अधिकतम स्तर योग खोजना है। 

समस्या विवरण: हमारे पास एक बाइनरी ट्री है, हम बाइनरी ट्री में सभी स्तरों का योग खोजेंगे और फिर उनमें से अधिकतम लौटाएंगे।

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

इनपुट: 

C++ में बाइनरी ट्री में अधिकतम स्तर योग खोजें

आउटपुट: 5

व्याख्या: 

स्तर 1 पर तत्वों का योग: 3
स्तर 2 पर तत्वों का योग: -3 + 4 = 1
स्तर 3 पर तत्वों का योग: 5 - 1 + 6 - 5 = 5

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

समस्या को हल करने के लिए, हमें लेवल ऑर्डर ट्रैवर्सल का उपयोग करके ट्री को ट्रैवर्स करना होगा। और प्रत्येक स्तर के लिए, हम योग खोजेंगे और फिर अधिकतम levelSum खोजेंगे।

हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम,

उदाहरण

#include <bits/stdc++.h> using namespace std; struct Node {        int data;    struct Node *left, *right; }; struct Node* newNode(int data){        struct Node* node = new Node;    node->data = data;    node->left = node->right = NULL;    return (node); } int findMaxLevelSum(struct Node* root){        if (root == NULL)       return 0;    int maxSum = root->data;    queue<Node*> q;    q.push(root);    while (!q.empty()){       int count = q.size();       int levelSum = 0;       while (count--) {                    Node* temp = q.front();          q.pop();          levelSum = levelSum + temp->data;          if (temp->left != NULL)             q.push(temp->left);          if (temp->right != NULL)             q.push(temp->right);       }       maxSum = max(levelSum, maxSum);    }    return maxSum; } int main(){        struct Node* root = newNode(3);    root->left = newNode(-3);    root->right = newNode(4);    root->left->left = newNode(5);    root->left->right = newNode(-1);    root->right->left = newNode(6);    root->right->right = newNode(-5);    cout<<"The sum of level with maximum level sum is "<<findMaxLevelSum(root);    return 0; }

आउटपुट

The sum of level with maximum level sum is 5

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

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

  1. C++ में बाइनरी ट्री में अधिकतम लेवल उत्पाद ढूंढें C++ में बाइनरी ट्री में अधिकतम लेवल उत्पाद ढूंढें

    मान लीजिए, एक बाइनरी ट्री दिया गया है। इसमें पॉजिटिव और नेगेटिव नोड्स हैं। हमें इसके प्रत्येक लेवल पर अधिकतम उत्पाद ढूंढना है। इसे ट्री मानें, तो लेवल 0 का उत्पाद 4 है, लेवल 1 का उत्पाद 2 * -5 = -10 है, और लेवल 2 का उत्पाद -1 * 3 * -2 * 6 = 36 है। तो यह अधिकतम है। इसे हल करने के लिए, हम ट्री का

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

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