একটি বাইনারি ট্রি দেওয়া থাকলে, এর ডান পাশের নোডগুলো (Right View) প্রিন্ট করতে হবে। প্রথমে ব্যবহারকারী ডেটা দিয়ে বাইনারি ট্রি তৈরি করবে, তারপর রাইট ভিউ প্রিন্ট করা হবে।

উপরের ডায়াগ্রামে ১০, ৪২, ৯৩, ১৪, ৩৫, ৯৬, ৫৭, ৮৮ নোড দিয়ে বাইনারি ট্রি বানানো হয়েছে। এদের মধ্যে ডান পাশে থাকা নোডগুলো: ১০, ৯৩, ৫৭, ৮৮।
উদাহরণ
Input: 10 42 93 14 35 96 57 88 Output: 10 93 57 88
প্রতিটি নোডের দুটি পয়েন্টার থাকে: লেফট এবং রাইট। এই সমস্যায় শুধু রাইট নোডগুলো ট্রাভার্স করলেই চলে।
রাইট ভিউতে সেই নোডগুলো থাকে যারা তাদের লেভেলের (level) লাস্ট নোড। রিকার্সিভ পদ্ধতিতে রাইট সাবট্রি আগে ট্রাভার্স করলে, যখন কোনো নোডের লেভেল আগের নোডের লেভেলের চেয়ে বেশি হয়, সেটি প্রিন্ট করা হয়।
অ্যালগরিদম
START
Step 1: Create node structure with data, left, right pointers
Step 2: Function New(int item) to create new node
Step 3: Function right_view(node* root, int level, int* end_level)
IF root == NULL RETURN
IF *end_level < level
PRINT root->data
*end_level = level
CALL right_view(root->right, level+1, end_level)
CALL right_view(root->left, level+1, end_level)
Step 4: Function right(node* root)
level = 0
CALL right_view(root, 1, &level)
Step 5: In main()
Create tree nodes, 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