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

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

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

हमें एक बाइनरी ट्री के लिए एक लो लेवल और एक हाई लेवल दिया जाएगा और हमें दिए गए लेवल्स के बीच के सभी तत्वों को प्रिंट करना होगा।

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

C++ उदाहरण

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

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

void print_nodes(Node* root, int low, int high) {
    queue<Node*> Q;
    Node *marker = new Node;
    int level = 1;
    Q.push(root);
    Q.push(marker);
    
    while (!Q.empty()) {
        Node *n = Q.front();
        Q.pop();
        
        if (n == marker) {
            cout << endl;
            level++;
            if (Q.empty() || level > high)
                break;
            Q.push(marker);
            continue;
        }
        
        if (level >= low)
            cout << n->data << " ";
        
        if (n->left != NULL) Q.push(n->left);
        if (n->right != NULL) Q.push(n->right);
    }
}

Node* create_node(int data) {
    Node* temp = new Node;
    temp->data = data;
    temp->left = temp->right = NULL;
    return temp;
}

int main() {
    struct Node *root = create_node(20);
    root->left = create_node(8);
    root->right = create_node(22);
    root->left->left = create_node(4);
    root->left->right = create_node(12);
    root->left->right->left = create_node(10);
    root->left->right->right = create_node(14);
    
    cout << "Elements between the given levels are: ";
    print_nodes(root, 2, 3);
    return 0;
}

आउटपुट

Elements between the given levels are: 8 22 4 12
  1. C++ प्रोग्राम: बाइनरी ट्री के विषम स्तरों पर नोड्स प्रिंट करना C++ प्रोग्राम: बाइनरी ट्री के विषम स्तरों पर नोड्स प्रिंट करना

    इस ट्यूटोरियल में, हम एक दिए गए बाइनरी ट्री के विषम स्तरों पर मौजूद नोड्स को प्रिंट करने के प्रोग्राम पर चर्चा करेंगे। इस प्रोग्राम में, रूट नोड के लिए स्तर 1 माना जाता है और साथ ही वैकल्पिक स्तर अगला विषम स्तर होता है। उदाहरण के लिए, मान लें हमें निम्नलिखित बाइनरी ट्री दिया गया है: तो इस बाइनरी

  1. C++ प्रोग्राम: बाइनरी ट्री में किन्हीं दो नोड्स के बीच पथ प्रिंट करना C++ प्रोग्राम: बाइनरी ट्री में किन्हीं दो नोड्स के बीच पथ प्रिंट करना

    हमें एक बाइनरी ट्री दिया गया है जिसके नोड्स विशिष्ट हैं और उस बाइनरी ट्री के दो नोड्स दिए गए हैं जिनके बीच का पथ हम प्रिंट करना चाहते हैं। उदाहरण के लिए - हम नोड 140 से 211 के बीच का पथ प्रिंट करना चाहते हैं तो इसका आउटपुट होना चाहिए - Output: 140->3->10->211 विचार यह है कि रूट नोड्स से दो

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

    दिए गए बाइनरी ट्री में, कार्य 1 से n तक शुरू होने वाले प्रत्येक कुंजी से जुड़े लेवल को प्रिंट करना है जो एक नोड में संग्रहीत है। उपरोक्त ट्री में नोड्स हैं - 10 at level 1 3 and 211 at level 2 140, 162, 100 and 146 at level 3 दिए गए कुंजी के लिए प्रोग्राम को उस विशेष कुंजी का लेवल प्रिंट करना होगा।