এই সমস্যায়, আমাদের একটি গাছ দেওয়া হয়। গঠন পরবর্তী একটি পয়েন্টার রয়েছে. আমাদের কাজ হল এই পয়েন্টারটিকে ইনঅর্ডার উত্তরাধিকারী দিয়ে তৈরি করা নোডের।
struct node {
int value;
struct node* left;
struct node* right;
struct node* next;
} পরবর্তী সমস্ত পয়েন্টার NULL তে সেট করা আছে এবং আমাদের পয়েন্টারটিকে নোডের ইনঅর্ডার উত্তরাধিকারীতে সেট করতে হবে৷
অভ্যন্তরীণ ট্রাভার্সাল − এটি নিম্নোক্ত আকারে অতিক্রম করে,
Left node -> root Node -> right node.
অভ্যন্তরীণ উত্তরাধিকারী − ইনঅর্ডার উত্তরসূরি হল সেই নোড যা বর্তমান নোডের পরে আসে গাছের ইনঅর্ডার ট্রাভার্সাল৷
সমস্যাটি বোঝার জন্য একটি উদাহরণ দেওয়া যাক,

ইন-অর্ডার ট্রাভার্সাল হল 7 8 3 5 9 1
প্রতিটি নোড −
পপুলেট করা হচ্ছেNext of 5 is 9 Next of 8 is 3 Next of 7 is 8 Next of 3 is 5 Next of 9 is 1
এই সমস্যাটি সমাধান করার জন্য, আমরা গাছটি অতিক্রম করব তবে ক্রম আকারে বিপরীতে। তারপরে আমরা শেষ ভিজিট এলিমেন্টটিকে সংখ্যার পরেরটিতে রাখব।
উদাহরণ
আমাদের সমাধানের বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম,
#include<iostream>
using namespace std;
struct node {
int data;
node *left;
node *right;
node *next;
};
node* insertNode(int data){
node* Node = new node();
Node->data = data;
Node->left = NULL;
Node->right = NULL;
Node->next = NULL;
return(Node);
}
void populateTree(node* pop){
static node *next = NULL;
if (pop){
populateTree(pop->right);
pop->next = next;
next = pop;
populateTree(pop->left);
}
}
void printNext(node * root) {
node *ptr = root->left->left;
while(ptr){
cout<<"Next of "<<ptr->data<<" is ";
cout<<(ptr->next? ptr->next->data: -1)<<endl;
ptr = ptr->next;
}
}
int main() {
node *root = insertNode(15);
root->left = insertNode(99);
root->right = insertNode(1);
root->left->left = insertNode(76);
root->left->right = insertNode(31);
cout<<"Populating the Tree by adding inorder successor to the next\n";
populateTree(root);
printNext(root);
return 0;
} আউটপুট
পরবর্তীতে ক্রমানুসারী ক্রমানুসারী যোগ করে বৃক্ষের জনসংখ্যা তৈরি করা হচ্ছে
Next of 76 is 99 Next of 99 is 31 Next of 31 is 15 Next of 15 is 1 Next of 1 is -1