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

C++ में पूर्ण बाइनरी ट्री के दर्पण छवि नोड्स का इनऑर्डर तरीके से योग


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

यहां, हमें बाएं उप-ट्री का इनऑर्डर ट्रैवर्सल ढूंढना है, और फिर प्रत्येक नोड के लिए, हम उसके साथ दर्पण छवि जोड़ेंगे। इसका मतलब है यदि हम बाएं लीफ नोड को पार कर रहे हैं, तो हम उसके साथ दाएं लीफ नोड का मान जोड़ेंगे। क्योंकि यह दर्पण छवि नोड है।

कुछ महत्वपूर्ण परिभाषाएं

पूर्ण बाइनरी ट्री एक बाइनरी ट्री है जहां अंतिम स्तर को छोड़कर सभी स्तरों में नोड्स की उच्चतम संख्या होती है।

इनऑर्डर ट्रैवर्सल एक ट्री ट्रैवर्सल तकनीक है जिसमें पहले बायां उप-ट्री देखा जाता है, फिर रूट देखा जाता है और फिर दायां उप-ट्री देखा जाता है।

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

इनपुट

C++ में पूर्ण बाइनरी ट्री के दर्पण छवि नोड्स का इनऑर्डर तरीके से योग

आउटपुट - 9 9 17 2

व्याख्या - बाएं उप-ट्री का इनऑर्डर ट्रैवर्सल 5-7-8-1 है।

सभी नोड्स को दर्पण छवियों के साथ जोड़ना।

5 + 4 = 9
7 + 2 = 9
8 + 9 = 17
1 + 1 = 2

इस समस्या को हल करने के लिए, हम इनऑर्डर ट्रैवर्सल का उपयोग करके बाइनरी ट्री को पार करेंगे। हम दो नोड्स का उपयोग करेंगे, एक बाएं उप-ट्री को पार करने के लिए और दूसरा नोड के दर्पण को देखने के लिए। उदाहरण के लिए, हमारे पास बाएं उप-ट्री के लिए एक रूट नोड है और उसके लिए हमारे पास mirrorRoot होगा जो उसका दर्पण छवि पार करेगा।

उदाहरण

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

#include <iostream>
using namespace std;

typedef struct node {
    int data;
    struct node* left;
    struct node* right;
    node(int d) {
        data = d;
        left = NULL;
        right = NULL;
    }
} Node;

void printMirrorSum(Node* root, Node* rootMirror) {
    if (root->left == NULL && rootMirror->right == NULL)
        return;
    printMirrorSum(root->left, rootMirror->right);
    cout << (root->left->data + rootMirror->right->data) << endl;
    printMirrorSum(root->right, rootMirror->left);
}

int main() {
    Node* root = new Node(1);
    root->left = new Node(7);
    root->right = new Node(2);
    root->left->left = new Node(5);
    root->left->right = new Node(8);
    root->right->left = new Node(9);
    root->right->right = new Node(4);
    cout << "नोड और दर्पण छवि नोड्स का योग:\n";
    printMirrorSum(root, root);
    if (root)
        cout << (root->data + root->data);
    return 0;
}

आउटपुट

नोड और दर्पण छवि नोड्स का योग:
9
9
17
2

  1. C++ में बाइनरी ट्री में निकटतम लीफ ढूंढें C++ में बाइनरी ट्री में निकटतम लीफ ढूंढें

    मान लीजिए, एक बाइनरी ट्री दिया गया है। इसमें अलग-अलग लेवल पर लीफ नोड्स हैं। एक और पॉइंटर दिया गया है, जो एक नोड को इंगित कर रहा है। हमें इंगित नोड से निकटतम लीफ नोड की दूरी ढूंढनी है। ट्री को नीचे जैसा मानें - यहां लीफ नोड्स 2, -2 और 6 हैं। यदि पॉइंटर नोड -5 पर इंगित कर रहा है, तो -5 से निकटतम नोड

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

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

  1. C++ प्रोग्राम: बाइनरी ट्री के नोड्स को प्रिंट करना जैसे ही वे लीफ नोड बनते हैं C++ प्रोग्राम: बाइनरी ट्री के नोड्स को प्रिंट करना जैसे ही वे लीफ नोड बनते हैं

    एक बाइनरी ट्री दिया गया है, हमें उसके लीफ नोड्स को प्रिंट करना है और फिर उन लीफ नोड्स को हटाना है और फिर तब तक दोहराना है जब तक ट्री में कोई नोड न बचे। उदाहरण तो समस्या का आउटपुट होना चाहिए - 6 7 9 13 14 3 4 2 1 दृष्टिकोण हमने एक ऐसा दृष्टिकोण अपनाया है जहां हम DFS लागू कर रहे हैं। एक अस्थायी म