১৮-৪ঃ Binary Tree Input ইমপ্লিমেন্টেশন
নিচে Binary Tree Input এর কোড Implementation কোডের মাধ্যমে দেখানো হয়েছে। সাথে গুরুত্বপূর্ণ পয়েন্ট গুলো কমেন্ট আকারে দেয়া আছে ।
Code :
#include <bits/stdc++.h>
using namespace std;
class Node
{
public:
int val;
Node *left;
Node *right;
Node(int val)
{
this->val = val;
this->left = NULL;
this->right = NULL;
}
}; // Binary Tree এর Node এর নীল নকশা
Node *input_tree() // একটি ফাংশন তৈরি করা হয়েছে। যা একটি Binary Tree input নিয়ে তার Root Node এর এড্রেস রিটার্ন করবে
{
int val;
cin >> val; // প্রথমে Root Node এর ভ্যালু ইনপুটে নিলাম
Node *root;
if (val == -1) // যদি Root -1 হয় তবে Root টি Null হবে অর্থাৎ Binary Tree টি empty
root = NULL;
else
root = new Node(val); // Otherwise ঐ Node টি হলো Root Node
queue<Node *> q; // এরপর বাকি প্রসেস Queue এর সাহায্যে করার জন্য আমরা একটি Node এর Queue নিলাম
if (root)
q.push(root); // এরপর Root Node কে queue তে পুশ করলাম
while (!q.empty())
{
// এরপর একটি একটি Node পিক করতে থাকবো
Node *p = q.front(); // প্রথমে শুরুতে যে Node আছে তাকে পিক করলাম
q.pop();
// যেহেতু এই Node এর সাথে তার Child গুলোকে কানেক্ট করা লাগবে , তাই এর child গুলো ইনপুট নেয়া হচ্ছে
int l, r;
cin >> l >> r;
// দুটি Node পয়েন্টার তৈরি করা হয়েছে যা ঐ picked নোড এর children দের এড্রেস রাখবে
Node *myLeft;
Node *myRight;
// l এর মান -1 হলে , ঐ Node এর কোনো left children নেই
if (l == -1)
myLeft = NULL;
else
myLeft = new Node(l); // Otherwise left Node ক্রিয়েট করা হয়েছে
// r এর মান -1 হলে , ঐ Node এর কোনো right children নেই
if (r == -1)
myRight = NULL;
else
myRight = new Node(r); // Otherwise right Node ক্রিয়েট করা হয়েছে
p->left = myLeft; // picked Node এর left এ left child কানেক্ট করা হয়েছে
p->right = myRight; // picked Node এর left এ right child কানেক্ট করা হয়েছে
// এরপর ঐ Children গুলোকে লাইনে দাড় করানো হয়েছে।
if (p->left)
q.push(p->left);
if (p->right)
q.push(p->right);
}
return root; // সবশেষে Root Node টি রিটার্ন করা হয়েছে।
}
int main()
{
Node *root = input_tree();
level_order(root);
return 0;
}
Last updated