কম্পিউটার

C++ এ বাইনারি ট্রির লেভেল অর্ডার ট্রাভার্সাল করার জন্য প্রোগ্রাম


ধরুন আমাদের একটি বাইনারি গাছ আছে। লেভেল অর্ডার ট্রাভার্সাল ফ্যাশন ব্যবহার করে আমাদের এই গাছটি অতিক্রম করতে হবে। তাই যদি গাছের মত হয়

C++ এ বাইনারি ট্রির লেভেল অর্ডার ট্রাভার্সাল করার জন্য প্রোগ্রাম

ট্রাভার্সাল সিকোয়েন্সটি এরকম হবে:[1,2,3,5,4]

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • নোড সঞ্চয় করার জন্য কিউ কিউ সংজ্ঞায়িত করুন

  • ক্যুতে রুট ঢোকান।

  • que খালি না থাকার সময়, করুন

    • আইটেম :=সারির সামনের অবস্থানে উপস্থিত আইটেম

    • আইটেমের মান প্রিন্ট করুন

    • যদি আইটেমের বাম অংশটি শূন্য না হয়, তাহলে আইটেমের বাম অংশটি que এ সন্নিবেশ করুন

    • যদি আইটেমের ডানটি শূন্য না হয়, তাহলে que এ আইটেমের ডান সন্নিবেশ করুন

    • que

      থেকে সামনের উপাদান মুছুন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<int> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class TreeNode{
   public:
      int val;
      TreeNode *left, *right;
      TreeNode(int data){
         val = data;
         left = right = NULL;
      }
};
class Solution {
   public:
   vector<int> solve(TreeNode* root) {
      if(!root)
         return {};
      vector <int> ret;
      queue <TreeNode*> q;
      q.push(root);
      while(!q.empty()){
         TreeNode* node = q.front();
         q.pop();
         ret.push_back(node->val);
         if(node->left){
            q.push(node->left);
         }
         if(node->right){
            q.push(node->right);
         }
      }
      return ret;
   }
};
main(){
   TreeNode *root = new TreeNode(1);
   root->left = new TreeNode(2);
   root->right = new TreeNode(3);
   root->left->right = new TreeNode(5);
   root->right->right = new TreeNode(4);
   Solution ob;
   print_vector(ob.solve(root));
}

ইনপুট

TreeNode *root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->right = new TreeNode(5);
root->right->right = new TreeNode(4);

আউটপুট

[1, 2, 3, 5, 4, ]

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

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

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

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