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

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

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

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

उदाहरण,

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

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

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

>आउटपुट -

      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

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

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

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

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

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

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