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

উপরের ট্রিতে, নোডগুলো হলো −
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