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

C++ में जिगजैग ट्री ट्रैवर्सल


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

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

C++ में जिगजैग ट्री ट्रैवर्सल

उपरोक्त बाइनरी ट्री का जिगजैग ट्रैवर्सल है

3   5   1   8   7   0   4

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

अब, हम दो स्टैक (करंट और नेक्स्ट) और ऑर्डर के लिए एक मान का उपयोग करेंगे। पहले, हम करंट से नोड को ट्रैवर्स करेंगे और लेफ्ट चाइल्ड से राइट चाइल्ड तक नोड्स को फीड करेंगे ताकि रिवर्स ऑर्डर मिले। फिर करंट से फिर रिवर्स करेंगे। ऑर्डर वेरिएबल यह दिखाने में महत्वपूर्ण भूमिका निभाता है कि किस साइड को प्रिंट करना है।

उदाहरण

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

#include <iostream>
#include <stack>
using namespace std;

struct Node {
    int data;
    struct Node *left, *right;
};

void zigZagTreeTraversal(struct Node* root) {
    if (!root)
        return;
    stack<struct Node*> currentLevel;
    stack<struct Node*> nextLevel;
    currentLevel.push(root);
    bool LtR = true;
    while (!currentLevel.empty()) {
        struct Node* temp = currentLevel.top();
        currentLevel.pop();
        if (temp) {
            cout << temp->data << "\t";
            if (LtR) {
                if (temp->left)
                    nextLevel.push(temp->left);
                if (temp->right)
                    nextLevel.push(temp->right);
            } else {
                if (temp->right)
                    nextLevel.push(temp->right);
                if (temp->left)
                    nextLevel.push(temp->left);
            }
        }
        if (currentLevel.empty()) {
            LtR = !LtR;
            swap(currentLevel, nextLevel);
        }
    }
}

struct Node* insertNode(int data) {
    struct Node* node = new struct Node;
    node->data = data;
    node->left = node->right = NULL;
    return (node);
}

int main() {
    struct Node* root = insertNode(3);
    root->left = insertNode(1);
    root->right = insertNode(5);
    root->left->left = insertNode(8);
    root->left->right = insertNode(7);
    root->right->left = insertNode(0);
    root->right->right = insertNode(4);
    cout << "दिए गए बाइनरी ट्री का जिगजैग ट्रैवर्सल है \n";
    zigZagTreeTraversal(root);
    return 0;
}

आउटपुट

दिए गए बाइनरी ट्री का जिगजैग ट्रैवर्सल है 3   5   1   8   7   0   4
  1. C++ में दिए गए बाइनरी ट्री का पोस्टऑर्डर रिकर्सिव ट्रैवर्सल करने का प्रोग्राम C++ में दिए गए बाइनरी ट्री का पोस्टऑर्डर रिकर्सिव ट्रैवर्सल करने का प्रोग्राम

    ट्री ट्रैवर्सल ग्राफ ट्रैवर्सल का एक रूप है। इसमें ट्री के प्रत्येक नोड को ठीक एक बार चेक या प्रिंट करना शामिल है। बाइनरी सर्च ट्री का पोस्टऑर्डर ट्रैवर्सल ट्री के नोड्स को (लेफ्ट, राइट, रूट) के क्रम में विजिट करता है। बाइनरी ट्री के पोस्टऑर्डर ट्रैवर्सल का एक उदाहरण निम्नलिखित है। एक बाइनरी ट्री नि

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

    ट्री ट्रैवर्सल ग्राफ ट्रैवर्सल का एक रूप है। इसमें ट्री के प्रत्येक नोड को ठीक एक बार चेक या प्रिंट करना शामिल है। बाइनरी सर्च ट्री का इनऑर्डर ट्रैवर्सल ट्री के नोड्स को (लेफ्ट, रूट, राइट) के क्रम में विजिट करता है। बाइनरी ट्री के इनऑर्डर ट्रैवर्सल का एक उदाहरण निम्नलिखित है। एक बाइनरी ट्री निम्नलिख

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

    ट्री ट्रैवर्सल ग्राफ ट्रैवर्सल का एक रूप है। इसमें ट्री के प्रत्येक नोड को ठीक एक बार चेक या प्रिंट करना शामिल है। बाइनरी सर्च ट्री का प्रीऑर्डर ट्रैवर्सल ट्री के नोड्स को (रूट, लेफ्ट, राइट) के क्रम में विजिट करता है। बाइनरी ट्री के प्रीऑर्डर ट्रैवर्सल का एक उदाहरण निम्नलिखित है। एक बाइनरी ट्री निम्