কম্পিউটার

C++-এ সমস্ত নোডের জন্য Inorder Successor পপুলেট করুন


এই সমস্যায়, আমাদের একটি গাছ দেওয়া হয়। গঠন পরবর্তী একটি পয়েন্টার রয়েছে. আমাদের কাজ হল এই পয়েন্টারটিকে ইনঅর্ডার উত্তরাধিকারী দিয়ে তৈরি করা নোডের।

struct node {
   int value;
   struct node* left;
   struct node* right;
   struct node* next;
}

পরবর্তী সমস্ত পয়েন্টার NULL তে সেট করা আছে এবং আমাদের পয়েন্টারটিকে নোডের ইনঅর্ডার উত্তরাধিকারীতে সেট করতে হবে৷

অভ্যন্তরীণ ট্রাভার্সাল − এটি নিম্নোক্ত আকারে অতিক্রম করে,

Left node -> root Node -> right node.

অভ্যন্তরীণ উত্তরাধিকারী − ইনঅর্ডার উত্তরসূরি হল সেই নোড যা বর্তমান নোডের পরে আসে গাছের ইনঅর্ডার ট্রাভার্সাল৷

সমস্যাটি বোঝার জন্য একটি উদাহরণ দেওয়া যাক,

C++-এ সমস্ত নোডের জন্য Inorder Successor পপুলেট করুন

ইন-অর্ডার ট্রাভার্সাল হল 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

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

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

  3. C++ এ প্রদত্ত নোড থেকে k দূরত্বে সমস্ত নোড প্রিন্ট করুন

  4. C++ এ একটি লিফ নোড থেকে k দূরত্বে থাকা সমস্ত নোড প্রিন্ট করুন