इस समस्या में हमें एक बाइनरी ट्री दिया जाता है और हमें इसे दो डायमेंशनल प्लेन प्रिंट करना होता है।
बाइनरी ट्री एक विशेष पेड़ है जिसके प्रत्येक नोड में अधिकतम दो बच्चे नोड होते हैं। इसलिए, प्रत्येक नोड या तो लीफ नोड होता है या उसमें एक या दो चाइल्ड नोड होते हैं।
उदाहरण,
आइए विषय को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं -
>आउटपुट -
7 4 5 1 3 8
अब जैसा कि हमने उदाहरण में देखा है, पेड़ के नोड्स क्षैतिज रूप से 2-डी आउटपुट स्क्रीन में मुद्रित होते हैं।
यहाँ, हमने पेड़ को 90o तक फ़्लिप किया है।
आइए देखें कि नया क्षैतिज पेड़ किससे बना है,
-
ट्री डेटा संरचना एक क्षैतिज तरीके से संग्रहीत की जाती है जिसमें शामिल है
-
प्रारंभिक रेखा के नीचे क्षैतिज दृश्य 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