इस समस्या में, हमें एक बाइनरी ट्री दिया गया है और हमें इसे दो आयामी तल पर प्रिंट करना है।
बाइनरी ट्री एक विशेष ट्री है जिसका प्रत्येक नोड अधिकतम दो चाइल्ड नोड रख सकता है। तो, प्रत्येक नोड या तो एक लीफ नोड होता है या उसके एक या दो चाइल्ड नोड होते हैं।
उदाहरण,

आइए एक उदाहरण लेकर इस विषय को बेहतर ढंग से समझते हैं -

आउटपुट -
7 4 5 1 3 8
जैसा कि हमने उदाहरण में देखा, ट्री के नोड्स को 2-D आउटपुट स्क्रीन पर क्षैतिज रूप से प्रिंट किया जाता है।
यहां, हमने ट्री को 90 डिग्री घुमा दिया है।
आइए देखें कि नया क्षैतिज ट्री किससे बना है,
ट्री डेटा संरचना को क्षैतिज तरीके से संग्रहीत किया जाता है जिसमें शामिल हैं
रूट क्षैतिज दृश्य में पहली स्थिति में शुरुआती लाइन से n लाइन नीचे। यानी रूट nth लाइन की शुरुआत में होगा।
ट्री के नए स्तर 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