Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में बाइनरी ट्री को 2-आयामों में प्रिंट करें


इस समस्या में, हमें एक बाइनरी ट्री दिया गया है और हमें इसे दो आयामी तल पर प्रिंट करना है।

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

उदाहरण,

C++ में बाइनरी ट्री को 2-आयामों में प्रिंट करें

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

C++ में बाइनरी ट्री को 2-आयामों में प्रिंट करें

आउटपुट -

     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

  1. C++ में बाइनरी ट्री के सभी फुल नोड्स प्रिंट करना C++ में बाइनरी ट्री के सभी फुल नोड्स प्रिंट करना

    इस समस्या में, हमें एक बाइनरी ट्री दी गई है। हमारा कार्य ट्री के उन सभी नोड्स को प्रिंट करना है जो फुल नोड्स हैं। बाइनरी ट्री बाइनरी ट्री एक ट्री है जिसमें एक नोड के अधिकतम 2 चाइल्ड नोड्स हो सकते हैं। नोड या वर्टेक्स में कोई नोड नहीं, एक चाइल्ड या दो चाइल्ड नोड्स हो सकते हैं। फुल नोड फुल नोड वह न

  1. C++ में बाइनरी ट्री के सभी इंटरनल नोड्स प्रिंट करना C++ में बाइनरी ट्री के सभी इंटरनल नोड्स प्रिंट करना

    इस समस्या में, हमें एक बाइनरी ट्री दी गई है और हमें बाइनरी ट्री के सभी इंटरनल नोड्स प्रिंट करने हैं। बाइनरी ट्री बाइनरी ट्री एक ट्री है जिसमें एक नोड के अधिकतम 2 चाइल्ड नोड्स हो सकते हैं। नोड या वर्टेक्स में कोई नोड नहीं, एक चाइल्ड या दो चाइल्ड नोड्स हो सकते हैं। इंटरनल नोड इंटरनल नोड वह नोड है ज

  1. C++ में बाइनरी ट्री में सभी K-सम पाथ प्रिंट करना C++ में बाइनरी ट्री में सभी K-सम पाथ प्रिंट करना

    इस समस्या में, हमें एक बाइनरी ट्री और एक संख्या K दी गई है और हमें ट्री में उन सभी पाथ को प्रिंट करना है जिनमें पाथ के नोड्स का योग K के बराबर हो। यहां, ट्री का पाथ ट्री के किसी भी नोड से शुरू हो सकता है और किसी भी नोड पर समाप्त हो सकता है। पाथ हमेशा रूट नोड से लीफ नोड की ओर होना चाहिए। ट्री के नो