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

C++ में बाइनरी ट्री को ऐसे बदलें कि हर नोड अपने राइट सबट्री के सभी नोड्स का योग स्टोर करे


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

इसके लिए हमें एक बाइनरी ट्री प्रदान की जाएगी। हमारा कार्य एक ऐसा ट्री वापस करना है जहां हर नोड उस नोड और उसके राइट सबट्री के योग के बराबर हो।

उदाहरण

#include <bits/stdc++.h>
using namespace std;

// ट्री की नोड संरचना
struct Node {
    int data;
    Node *left, *right;
};

// नया नोड बनाना
struct Node* createNode(int item) {
    Node* temp = new Node;
    temp->data = item;
    temp->left = NULL;
    temp->right = NULL;
    return temp;
}

// नया बाइनरी ट्री बनाना
int rightsum_tree(Node* root) {
    if (!root)
        return 0;
    if (root->left == NULL && root->right == NULL)
        return root->data;

    // लेफ्ट/राइट सबट्री के मान बदलना
    int rightsum = rightsum_tree(root->right);
    int leftsum = rightsum_tree(root->left);

    // राइट सबट्री का योग जोड़ना
    root->data += rightsum;
    return root->data + leftsum;
}

// ट्री को इनऑर्डर पैटर्न में पार करना
void inorder(struct Node* node) {
    if (node == NULL)
        return;
    inorder(node->left);
    cout << node->data << " ";
    inorder(node->right);
}

int main() {
    struct Node* root = NULL;
    root = createNode(1);
    root->left = createNode(2);
    root->right = createNode(3);
    root->left->left = createNode(4);
    root->left->right = createNode(5);
    root->right->right = createNode(6);

    rightsum_tree(root);
    cout << "Updated Binary Tree:\n";
    inorder(root);
    return 0;
}

आउटपुट

Updated Binary Tree: 4 7 5 10 9 6
  1. C++ में बाइनरी ट्री के सभी लीफ नोड्स को बाएं से दाएं इटरेटिव दृष्टिकोण से प्रिंट करना C++ में बाइनरी ट्री के सभी लीफ नोड्स को बाएं से दाएं इटरेटिव दृष्टिकोण से प्रिंट करना

    इस समस्या में, हमें एक बाइनरी ट्री दी गई है और हमें बाइनरी ट्री के सभी लीफ नोड्स को बाएं से दाएं इटरेटिव दृष्टिकोण का उपयोग करके प्रिंट करना है। उदाहरण इनपुट - आउटपुट - 1 4 7 इटरेटिव दृष्टिकोण का उपयोग करके इस समस्या को हल करने के लिए, हम डेप्थ-फर्स्ट सर्च (DFS) का उपयोग करेंगे। ट्री को पार करने

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

    इस समस्या में, हमें एक बाइनरी ट्री दी गई है और हमें बाइनरी ट्री के सभी लीफ नोड्स को दाएं से बाएं प्रिंट करना है। उदाहरण इनपुट - आउटपुट - 7 4 1 इस समस्या को हल करने के लिए, हमें बाइनरी ट्री को पार करना होगा। यह ट्रैवर्सल दो तरीकों से किया जा सकता है - प्रीऑर्डर ट्रैवर्सल यह ट्रैवर्सल रिकर्सन का

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

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