কম্পিউটার

সি ভাষায় একটি বাইনারি ট্রির ডান দৃশ্য মুদ্রণ করুন


কাজটি হল প্রদত্ত বাইনারি গাছের ডান নোডগুলি প্রিন্ট করা। প্রথমত ব্যবহারকারী একটি বাইনারি ট্রি তৈরি করার জন্য ডেটা সন্নিবেশ করবে এবং গাছের ডানদিকের দৃশ্য প্রিন্ট করবে।

সি ভাষায় একটি বাইনারি ট্রির ডান দৃশ্য মুদ্রণ করুন

উপরের চিত্রটি এই নোডগুলির মধ্যে 10, 42, 93, 14, 35, 96, 57 এবং 88 নোডগুলির সাথে তৈরি করা বাইনারি ট্রিটি প্রদর্শন করে যা একটি গাছের ডানদিকে থাকে যা বেছে নেওয়া হয় এবং পর্দায় প্রদর্শিত হয়। উদাহরণস্বরূপ, 10, 93, 57 এবং 88 হল একটি বাইনারি গাছের ডানদিকের নোড।

উদাহরণ

Input : 10 42 93 14 35 96 57 88
Output : 10 93 57 88

প্রতিটি নোডের সাথে যুক্ত দুটি পয়েন্টার রয়েছে যেমন বাম এবং ডান। এই প্রশ্ন অনুযায়ী, প্রোগ্রাম শুধুমাত্র ডান নোড অতিক্রম করতে হবে। সুতরাং, নোডের বাম সন্তান নিয়ে মাথা ঘামানোর দরকার নেই।

রাইট ভিউ সেই সমস্ত নোডগুলিকে সঞ্চয় করে যা তাদের স্তরের শেষ নোড। সুতরাং, আমরা নোডগুলিকে সংরক্ষণ এবং অ্যাক্সেস করার জন্য এমনভাবে রিকার্সিভ পদ্ধতি ব্যবহার করতে পারি যাতে ডান সাবট্রি বাম সাবট্রির আগে অতিক্রম করা হয়। যখনই প্রোগ্রামটি নোড সনাক্ত করে যার স্তরটি পূর্ববর্তী নোডের চেয়ে আগের নোডের স্তরের চেয়ে বেশি তা প্রদর্শিত হয় কারণ এটি তার স্তরের শেষ নোড হবে৷

নিচের কোডটি প্রদত্ত অ্যালগরিদমের সি বাস্তবায়ন দেখায়

অ্যালগরিদম

START
   Step 1 -> create node variable of type structure
      Declare int data
      Declare pointer of type node using *left, *right
   Step 2 -> create function for inserting node with parameter as item
      Declare temp variable of node using malloc
      Set temp->data = item
      Set temp->left = temp->right = NULL
      return temp
   step 3 -> Declare Function void right_view(struct node *root, int level, int *end_level)
      IF root = NULL
         Return
      IF *end_level < level
         Print root->data
         Set *end_level = level
         Call right_view(root->right, level+1, end_level)
         Call right_view(root->left, level+1, end_level)
   Step 4 -> Declare Function void right(struct node *root)
      Set int level = 0
      Call right_view(root, 1, &level)
   Step 5 -> In Main()
      Pass the values for the tree nodes using struct node *root = New(10)
      Call right(root)
STOP

উদাহরণ

#include<stdio.h>
#include<stdlib.h>
struct node {
   int data;
   struct node *left, *right;
};
struct node *New(int item) {
   struct node *temp = (struct node *)malloc(sizeof(struct node));
   temp->data = item;
   temp->left = temp->right = NULL;
   return temp;
}
void right_view(struct node *root, int level, int *end_level) {
   if (root == NULL) return;
   if (*end_level < level) {
      printf("%d\t", root->data);
      *end_level = level;
   }
   right_view(root->right, level+1, end_level);
   right_view(root->left, level+1, end_level);
}
void right(struct node *root) {
   int level = 0;
   right_view(root, 1, &level);
}
int main() {
   printf("right view of a binary tree is : ");
   struct node *root = New(10);
   root->left = New(42);
   root->right = New(93);
   root->left->left = New(14);
   root->left->right = New(35);
   root->right->left = New(96);
   root->right->right = New(57);
   root->right->left->right = New(88);
   right(root);
   return 0;
}

আউটপুট

যদি আমরা উপরের প্রোগ্রামটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে।

right view of a binary tree is : 10 93 57 88

  1. C++ এ ডান থেকে বামে একটি বাইনারি গাছের সমস্ত পাতার নোড প্রিন্ট করুন

  2. C++ এ একটি স্ট্যাক ব্যবহার করে বাইনারি ট্রিতে বাম থেকে ডানে লিফ নোড প্রিন্ট করুন

  3. পাইথন ব্যবহার করে বাইনারি ট্রিতে ডানদিকে নোড খুঁজে বের করার জন্য প্রোগ্রাম

  4. পাইথনে বাইনারি ট্রিতে দ্বিতীয় গভীরতম নোড খুঁজে বের করার প্রোগ্রাম