কম্পিউটার

C++ এ 2-ডাইমেনশনে বাইনারি ট্রি প্রিন্ট করুন


এই সমস্যায়, আমাদের একটি বাইনারি গাছ দেওয়া হয়েছে এবং আমাদের এটিকে দ্বিমাত্রিক সমতল প্রিন্ট করতে হবে৷

বাইনারি ট্রি হল একটি বিশেষ গাছ যার প্রতিটি নোডে সর্বোচ্চ দুটি চাইল্ড নোড থাকে। সুতরাং, প্রতিটি নোড হয় একটি লিফ নোড বা একটি বা দুটি চাইল্ড নোড রয়েছে৷

উদাহরণ,

C++ এ 2-ডাইমেনশনে বাইনারি ট্রি প্রিন্ট করুন

বিষয়টি আরও ভালোভাবে বোঝার জন্য একটি উদাহরণ নেওয়া যাক -

C++ এ 2-ডাইমেনশনে বাইনারি ট্রি প্রিন্ট করুন

আউটপুট -

      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

  1. C++ এ বাইনারি ট্রিতে একটি নোডের উত্তরসূরি

  2. C++ এ একটি বাইনারি ট্রিতে সমস্ত পূর্ণ নোড প্রিন্ট করুন

  3. একটি বাইনারি গাছের সমস্ত অভ্যন্তরীণ নোড C++ এ প্রিন্ট করুন

  4. C++ এ একটি বাইনারি ট্রিতে সমস্ত k-সম পথ প্রিন্ট করুন