এই সমস্যায়, আমাদের একটি বাইনারি গাছ দেওয়া হয়েছে এবং আমাদের এটিকে দ্বিমাত্রিক সমতল প্রিন্ট করতে হবে৷
বাইনারি ট্রি হল একটি বিশেষ গাছ যার প্রতিটি নোডে সর্বোচ্চ দুটি চাইল্ড নোড থাকে। সুতরাং, প্রতিটি নোড হয় একটি লিফ নোড বা একটি বা দুটি চাইল্ড নোড রয়েছে৷
উদাহরণ,

বিষয়টি আরও ভালোভাবে বোঝার জন্য একটি উদাহরণ নেওয়া যাক -

আউটপুট -৷
7 4 5 1 3 8
এখন যেমন আমরা উদাহরণে দেখেছি, গাছের নোডগুলি অনুভূমিকভাবে 2-ডি আউটপুট স্ক্রিনে মুদ্রিত হয়৷
এখানে, আমরা 90o দ্বারা গাছ উল্টিয়েছি।
আসুন দেখি নতুন অনুভূমিক গাছটি কী দিয়ে তৈরি,
-
ট্রি ডেটা স্ট্রাকচার একটি অনুভূমিক উপায়ে সংরক্ষিত হয় যার মধ্যে রয়েছে
-
সূচনা লাইনের নীচে অনুভূমিক দৃশ্য n লাইনে 1ম অবস্থানে থাকা রুট। অর্থাৎ রুট হবে nম লাইনের শুরুতে।
-
গাছের নতুন স্তরগুলি n+i এবং n-i রেখায় রয়েছে। এবং i ট্যাবে লাইনের শুরু থেকে দূরে স্পেস।
-
এবং গাছের ডানদিকের পাতার নোডটি প্রথম লাইনে মুদ্রিত হয়। যেখানে গাছের বামদিকের নোডটি শেষ লাইনে মুদ্রিত হয়।
-
উদাহরণ
আসুন এই যুক্তির উপর ভিত্তি করে একটি প্রোগ্রাম তৈরি করি -
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
#define COUNT 10
class Node{
public:
int data;
Node* left, *right;
Node(int data){
this->data = data;
this->left = NULL;
this->right = NULL;
}
};
void printTree(Node *root, int space){
if (root == NULL)
return;
space += COUNT;
printTree(root->right, space);
for (int i = COUNT; i < space; i++)
cout<<"\t";
cout<<root->data<<"\n";
printTree(root->left, space);
}
int main(){
Node *root = new Node(43);
root->left = new Node(25);
root->right = new Node(67);
root->left->left = new Node(14);
root->left->right = new Node(51);
root->right->left = new Node(26);
root->right->right = new Node(97);
root->left->left->left = new Node(81);
root->left->left->right = new Node(49);
root->left->right->left = new Node(07);
root->left->right->right = new Node(31);
root->right->left->left = new Node(29);
root->right->left->right = new Node(13);
root->right->right->left = new Node(59);
root->right->right->right = new Node(16);
printTree(root, 0);
return 0;
} আউটপুট
16 97 59 67 13 26 29 43 31 51 7 25 49 14 81