কম্পিউটার

C++ এ BST কে মিন হিপে রূপান্তর করুন


এই টিউটোরিয়ালে, আমরা একটি বাইনারি সার্চ ট্রিকে একটি মিন হিপে রূপান্তর করার জন্য একটি প্রোগ্রাম নিয়ে আলোচনা করব৷

এই জন্য আমাদের একটি বাইনারি অনুসন্ধান গাছ প্রদান করা হবে. আমাদের কাজ হল প্রদত্ত বাইনারি সার্চ ট্রিকে একটি মিন হিপে রূপান্তর করা যাতে বাইনারি সার্চ ট্রির অবস্থা অনুসরণ করা হয় যখন উপাদানগুলিকে নিজেদের সাথে তুলনা করা হয়।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
//node structure of BST
struct Node {
   int data;
   Node *left, *right;
};
//node creation
struct Node* getNode(int data) {
   struct Node *newNode = new Node;
   newNode->data = data;
   newNode->left = newNode->right = NULL;
   return newNode;
}
//performing preorder traversal
void preorderTraversal(Node*);
//storing values in sorted fashion
//with inorder traversal
void inorderTraversal(Node *root, vector<int>& arr) {
   if (root == NULL)
      return;
   inorderTraversal(root->left, arr);
   arr.push_back(root->data);
   inorderTraversal(root->right, arr);
}
//converting BST to min heap
void convert_BSPheap(Node *root, vector<int> arr, int *i) {
   if (root == NULL)
      return;
   root->data = arr[++*i];
   convert_BSPheap(root->left, arr, i);
   convert_BSPheap(root->right, arr, i);
}
//converting to min heap
void convert_minheap(Node *root) {
   //vector storing the values of nodes
   vector<int> arr;
   int i = -1;
   //moving via inorder traversal
   inorderTraversal(root, arr);
   convert_BSPheap(root, arr, &i);
}
//performing preorder traversal
void preorderTraversal(Node *root) {
   if (!root)
    return;
   cout << root->data << " ";
   preorderTraversal(root->left);
   preorderTraversal(root->right);
}
int main() {
   struct Node *root = getNode(4);
   root->left = getNode(2);
   root->right = getNode(6);
   root->left->left = getNode(1);
   root->left->right = getNode(3);
   root->right->left = getNode(5);
   root->right->right = getNode(7);
   convert_minheap(root);
   cout << "Preorder Traversal:" << endl;
   preorderTraversal(root);
   return 0;
}

আউটপুট

Preorder Traversal:
1 2 3 4 5 6 7

  1. C++ এ একটি প্রদত্ত পরিসরে থাকা BST নোডগুলি গণনা করুন

  2. C++ এ BST-তে নোড মুছুন

  3. C++ এ দ্বিপদ স্তূপ?

  4. C++ এ একটি মিন হিপে x মানের চেয়ে কম সব নোড প্রিন্ট করুন