কম্পিউটার

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


এই সমস্যায়, আমাদের একটি বাইনারি ট্রি দেওয়া হয়েছে এবং আমাদের সমস্ত নোডকে তাদের মান অনুসারে সাজানো ক্রমে একটি স্তরে প্রিন্ট করতে হবে৷

ধারণাটি আরও ভালভাবে বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

ইনপুট

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

আউটপুট৷ −

20
6 15
2 17 32 78

এই সমস্যা সমাধানের জন্য, আমাদের গাছের প্রতিটি স্তরের একটি সাজানো অর্ডার প্রিন্ট করতে হবে। এর জন্য, আমাদের একটি সারি এবং দুটি অগ্রাধিকার সারি তৈরি করতে হবে। NULL বিভাজক দুটি স্তর আলাদা করতে ব্যবহৃত হয়।

উদাহরণ

যুক্তি ব্যাখ্যা করার জন্য প্রোগ্রাম -

#include <iostream>
#include <queue>
#include <vector>
using namespace std;
struct Node {
   int data;
   struct Node *left, *right;
};
void printLevelElements(Node* root){
   if (root == NULL)
      return;
   queue<Node*> q;
   priority_queue<int, vector<int>, greater<int> > current_level;
   priority_queue<int, vector<int>, greater<int> > next_level;
   q.push(root);
   q.push(NULL);
   current_level.push(root->data);
   while (q.empty() == false) {
      int data = current_level.top();
      Node* node = q.front();
      if (node == NULL) {
         q.pop();
         if (q.empty())
            break;
         q.push(NULL);
         cout << "\n";
         current_level.swap(next_level);
         continue;
      }
      cout << data << " ";
      q.pop();
      current_level.pop();
      if (node->left != NULL) {
         q.push(node->left);
         next_level.push(node->left->data);
      }
      if (node->right != NULL) {
         q.push(node->right);
         next_level.push(node->right->data);
      }
   }
}
Node* insertNode(int data){
   Node* temp = new Node;
   temp->data = data;
   temp->left = temp->right = NULL;
   return temp;
}
int main(){
   Node* root = insertNode(12);
   root->left = insertNode(98);
   root->right = insertNode(34);
   root->left->left = insertNode(76);
   root->left->right = insertNode(5);
   root->right->left = insertNode(12);
   root->right->right = insertNode(45);
   cout << "Elements at each Level of binary tree are \n";
   printLevelElements(root);
   return 0;
}

আউটপুট

Elements at each Level of binary tree are
12
34 98
5 12 45 76

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

  2. C++ এ একটি বাইনারি ট্রির উল্লম্ব ক্রমে ট্রাভার্সালে kth নোড খুঁজুন

  3. C++ প্রোগ্রামিং-এ বাইনারি ট্রিতে যেকোনো দুটি নোডের মধ্যে প্রিন্ট পাথ।

  4. C++ প্রোগ্রামিং-এ একটি বাইনারি ট্রিতে সমস্ত নোডের লেভেল প্রিন্ট করুন।