কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রামিং-এ বাইনারি ট্রির সব নোডের লেভেল প্রিন্ট করা


একটি বাইনারি ট্রি দেওয়া আছে, টাস্ক হলো ১ থেকে n পর্যন্ত প্রতিটি নোডে সংরক্ষিত কির সাথে সম্পর্কিত লেভেল প্রিন্ট করা।

C++ প্রোগ্রামিং-এ বাইনারি ট্রির সব নোডের লেভেল প্রিন্ট করা

উপরের ট্রিতে, নোডগুলো হলো −

10 লেভেল ১-এ 3 এবং 211 লেভেল ২-এ 140, 162, 100 এবং 146 লেভেল ৩-এ

দেওয়া কি ব্যবহার করে প্রোগ্রামটি সেই নির্দিষ্ট কির লেভেল প্রিন্ট করতে হবে।

উদাহরণ

ইনপুট: 10 3 211 140 162 100 146 আউটপুট:
   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++-এ বাইনারি ট্রির প্রতিটি লেভেল সর্টেড অর্ডারে প্রিন্ট করুন

  2. C++ প্রোগ্রামিং-এ বাইনারি ট্রি নোডগুলো প্রিন্ট করা যেন তারা লিফ নোড হয়

  3. C++ প্রোগ্রামিং-এ বাইনারি ট্রিতে যেকোনো দুটি নোডের পথ প্রিন্ট করা

  4. C++ প্রোগ্রামিং-এ ট্রির বিষম লেভেলের নোডগুলো প্রিন্ট করা