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

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


दिए गए बाइनरी ट्री में, कार्य 1 से n तक शुरू होने वाले प्रत्येक कुंजी से जुड़े लेवल को प्रिंट करना है जो एक नोड में संग्रहीत है।

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

उपरोक्त ट्री में नोड्स हैं -

10 at level 1 3 and 211 at level 2 140, 162, 100 and 146 at level 3

दिए गए कुंजी के लिए प्रोग्राम को उस विशेष कुंजी का लेवल प्रिंट करना होगा।

उदाहरण

Input: 10 3 211 140 162 100 146 Output:    level of 10 is 1    Level of 3 is 2    Level of 211 is 2    Level of 140 is 3    Level of 162 is 3    Level of 100 is 3    Level of 146 is 3

एल्गोरिदम

START Step 1 -> create a structure of a node as    struct node       struct node *left, *right       int data    End Step 2 -> function to create a node    node* newnode(int data)    node *temp = new node    temp->data = data    temp->left = temp->right= NULL    return temp step 3 -> create function for finding levels of a node    void levels(Node* root)       IF root=NULL       Return    End    Create STL queue<pair<struct Node*, int> >que    que.push({root, 1})    create STL pair<struct Node*, int> par    Loop While !que.empty()       par = que.front()       que.pop()       print par.first->data and par.second       IF par.first->left          que.push({ par.first->left, par.second + 1 })       END       IF par.first->right          que.push({ par.first->right, par.second + 1 })       End    End STOP

उदाहरण

#include <bits/stdc++.h> using namespace std; //structure of a node struct Node{    int data;    struct Node *left, *right; }; //it will print levels of a tree void levels(Node* root){    if (root==NULL)       return;    queue<pair<struct Node*, int> >que;    que.push({root, 1});    pair<struct Node*, int> par;    while (!que.empty()) {       par = que.front();       que.pop();       cout << "Level of " << par.first->data << " is " << par.second << "\n";       if (par.first->left)          que.push({ par.first->left, par.second + 1 });       if (par.first->right)          que.push({ par.first->right, par.second + 1 });    } } //function to create nodes annd hence generate tree Node* newnode(int data){    Node* temp = new Node;    temp->data = data;    temp->left = temp->right = NULL;    return temp; } int main(){    Node* root = NULL;    //it will create a node    root = newnode(34);    root->left = newnode(12);    root->right = newnode(50);    root->left->left = newnode(11);    root->left->right = newnode(54);    levels(root);    return 0; }

आउटपुट

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

Level of 34 is 1 Level of 12 is 2 Level of 50 is 2 Level of 11 is 3 Level of 54 is 3

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

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

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

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

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

    दिए गए बाइनरी ट्री में, प्रोग्राम को ट्री के विषम लेवल पर नोड्स प्रिंट करने होंगे और बाइनरी ट्री के लेवल 1 से n तक शुरू होते हैं। चूंकि कुछ उल्लेख नहीं है, दो दृष्टिकोणों में से एक को लागू किया जा सकता है यानी रिकर्सन या इटरेशन। चूंकि हम एक रिकर्सिव दृष्टिकोण का उपयोग कर रहे हैं, प्रोग्राम एक फ़ंक्श