এই সমস্যায়, আমাদের একটি বাইনারি গাছ দেওয়া হয়েছে এবং আমাদের এটিকে দ্বিমাত্রিক সমতল প্রিন্ট করতে হবে৷
বাইনারি ট্রি হল একটি বিশেষ গাছ যার প্রতিটি নোডে সর্বোচ্চ দুটি চাইল্ড নোড থাকে। সুতরাং, প্রতিটি নোড হয় একটি লিফ নোড বা একটি বা দুটি চাইল্ড নোড রয়েছে৷
উদাহরণ,
বিষয়টি আরও ভালোভাবে বোঝার জন্য একটি উদাহরণ নেওয়া যাক -
আউটপুট -৷
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