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

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


समस्या विवरण

बाएं और दाएं बच्चों के साथ एक बाइनरी ट्री दिया गया है और कार्य दिए गए ट्री के सटीक दाएं और बाएं बच्चे को प्रिंट करना है।

उदाहरण

इनपुट: 106 20 320 100 21 61 52
आउटपुट: 106 20 320 100 52

एल्गोरिदम

शुरुआत
चरण 1: नोड की संरचना बनाएं
    int data घोषित करें
    struct node *left और *right घोषित करें
चरण 2: struct node* newNode(int val) बनाएं
    node* temp = new node बनाएं
    temp->data = val सेट करें
    temp->left = temp->right = NULL सेट करें
    return (temp)
चरण 3: void print(node *root) फंक्शन घोषित करें
    यदि root == NULL तो वापस करें
    STL queue que उपयोग करें
    que.push(root) कॉल करें
    STL vector ans उपयोग करें
    जब तक !que.empty() लूप
        int n = que.size() सेट करें
        i = 0 से n-1 तक लूप
            node *temp = que.front() सेट करें
            que.pop() सेट करें
            यदि i == 0 तो
                ans.push_back(temp->data) सेट करें
            अंत
            अन्यथा यदि i == n-1 तो
                ans.push_back(temp->data) सेट करें
            अंत
            यदि temp->left तो que.push(temp->left)
            यदि temp->right तो que.push(temp->right)
        अंत
    अंत
    auto i : ans के लिए लूप
        i प्रिंट करें
    अंत
चरण 4: main() में
    node *root = newNode(106) घोषित करें
    print(root) कॉल करें
रोकें

C++ प्रोग्राम उदाहरण

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

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

struct node* newNode(int val){
    node* temp = new node;
    temp->data = val;
    temp->left = temp->right = NULL;
    return (temp);
}

void print(node *root) {
    if(root == NULL)
        return;
    queue que;
    que.push(root);
    vector ans;
    while(!que.empty()){
        int n = que.size();
        for(int i = 0; i < n; i++){
            node *temp = que.front();
            que.pop();
            if(i == 0)
                ans.push_back(temp->data);
            else if(i == n-1)
                ans.push_back(temp->data);
            if(temp->left)
                que.push(temp->left);
            if(temp->right)
                que.push(temp->right);
        }
    }
    for(auto i : ans)
        cout << i << " ";
}

int main(){
    node *root = newNode(106);
    root->left = newNode(20);
    root->right = newNode(320);
    root->left->left = newNode(100);
    root->left->right = newNode(21);
    root->right->left = newNode(61);
    root->right->right = newNode(52);
    print(root);
    return 0;
}

आउटपुट

उपरोक्त प्रोग्राम चलाने पर निम्नलिखित आउटपुट उत्पन्न होगा:

106 20 320 100 52
  1. C++ प्रोग्राम: बाइनरी ट्री के विषम स्तरों पर नोड्स प्रिंट करना C++ प्रोग्राम: बाइनरी ट्री के विषम स्तरों पर नोड्स प्रिंट करना

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

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

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

  1. पायथन में बाइनरी ट्री के लीफ और नॉन-लीफ नोड्स खोजने का प्रोग्राम पायथन में बाइनरी ट्री के लीफ और नॉन-लीफ नोड्स खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें दो संख्याओं की एक सूची ढूंढनी है जहां पहली संख्या ट्री में पत्तियों की संख्या है और दूसरी संख्या गैर-पत्ती नोड्स की संख्या है।इसलिए, यदि इनपुट इस तरह हैतो आउटपुट (3, 2) होगा, क्योंकि 3 पत्तियां और 2 गैर-पत्ती नोड्स हैं।इसे हल करने के लिए, हम इन चरणों का पा