কম্পিউটার

C++ এ পুনরাবৃত্তি ছাড়াই N-ary গাছের প্রি-অর্ডার ট্রাভার্সাল


এই সমস্যায়, আমাদের একটি N-ary Tree দেওয়া হয়। আমাদের কাজ হল গাছের প্রি-অর্ডার ট্রাভার্সাল প্রিন্ট করা।

প্রথমে, আসুন কিছু মৌলিক পরিভাষা শিখি,

N-ary গাছ একটি গাছ যেখানে সমস্ত নোডের সর্বোচ্চ N চাইল্ড নোড থাকতে পারে। উদাহরণ 2-ary (বাইনারি) গাছে সর্বাধিক 2টি চাইল্ড নোড রয়েছে৷

প্রাক-অর্ডার ট্রাভার্সাল গাছের নোড অতিক্রম করার একটি উপায়। এতে আমরা প্রথমে রুট নোড তারপর লেফট চাইল্ড এবং তারপর রাইট চাইল্ড অতিক্রম করব।

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

C++ এ পুনরাবৃত্তি ছাড়াই N-ary গাছের প্রি-অর্ডার ট্রাভার্সাল

Preorder traversal :
12151499411719

এই সমস্যা সমাধানের জন্য, আমাদের স্ট্যাক ডেটা স্ট্রাকচার ব্যবহার করতে হবে। আমরা প্রথমে রুট নোডকে স্ট্যাকের দিকে ঠেলে দেব। তারপর এটি পপ এবং এটি মুদ্রণ. প্রতিটি পপড নোডের জন্য, আমরা স্ট্যাকের চাইল্ড নোডগুলিকে ডান চাইল্ড থেকে বাম চাইল্ডে ঠেলে দেব। তারপর পপ যখন সমস্ত চাইল্ড নোড পুশ করা হয়। স্ট্যাক খালি না হওয়া পর্যন্ত এই প্রক্রিয়াটি পুনরাবৃত্তি করুন।

আমাদের সমাধানের বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int key;
   vector<Node*> child;
};
Node* insertNode(int key){
   Node* temp = new Node;
   temp->key = key;
   return temp;
}
void preOrderTraversal(struct Node* root){
   stack<Node*> tree;
   tree.push(root);
   while (!tree.empty()) {
      Node* curr = tree.top();
      tree.pop();
      cout<<curr->key<<"\t";
      vector<Node*>::iterator it = curr->child.end();
      while (it != curr->child.begin()) {
         it--;
         tree.push(*it);
      }
   }
}
int main(){
   Node* root = insertNode(12);
   (root->child).push_back(insertNode(15));
   (root->child).push_back(insertNode(99));
   (root->child).push_back(insertNode(4));
   (root->child).push_back(insertNode(7));
   (root->child[0]->child).push_back(insertNode(1));
   (root->child[0]->child).push_back(insertNode(4));
   (root->child[0]->child).push_back(insertNode(25));
   (root->child[2]->child).push_back(insertNode(11));
   (root->child[3]->child).push_back(insertNode(19));
   cout<<"PreOrder Traversal of the tree is :\n";
   preOrderTraversal(root);
   return 0;
}

আউটপুট

PreOrder Traversal of the tree is :
12   15   14   25   99   4   11   7   19

  1. C++-এ N-ary Tree Level Order Traversal

  2. C++ এ পুনরাবৃত্তি ছাড়াই N-ary গাছের প্রি-অর্ডার ট্রাভার্সাল

  3. পাইথনে বাইনারি ট্রি প্রিঅর্ডার ট্রাভার্সাল

  4. প্রদত্ত বাইনারি ট্রির প্রি-অর্ডার নন-রিকারসিভ ট্রাভার্সাল করার জন্য C++ প্রোগ্রাম