এই টিউটোরিয়ালে, আমরা বাইনারি সার্চ ট্রি (BST) কে ম্যাক্স হিপ (Max Heap)-এ কনভার্ট করার প্রোগ্রাম নিয়ে আলোচনা করব।
এই জন্য আমাদের একটি বাইনারি সার্চ ট্রি দেওয়া থাকবে। আমাদের কাজ হলো দেওয়া বাইনারি সার্চ ট্রিকে একটি ম্যাক্স হিপে কনভার্ট করা যাতে বাইনারি সার্চ ট্রির শর্ত মেনে এলিমেন্টগুলো নিজেদের সাথে তুলনা করা হয়।
C++ উদাহরণ
#include <bits/stdc++.h> using namespace std; // BST নোড স্ট্রাকচার struct Node { int data; Node *left, *right; }; // নোড তৈরি করা struct Node* getNode(int data) { struct Node* newNode = new Node; newNode->data = data; newNode->left = newNode->right = NULL; return newNode; } // পোস্ট-অর্ডার ট্রাভার্সাল করা void postorderTraversal(Node*); // ইন-অর্ডার ট্রাভার্সাল দিয়ে সর্টেড ম্যানারে যাওয়া void inorderTraversal(Node* root, vector<int>& arr) { if (root == NULL) return; inorderTraversal(root->left, arr); arr.push_back(root->data); inorderTraversal(root->right, arr); } void convert_BSTHeap(Node* root, vector<int> arr, int* i){ if (root == NULL) return; convert_BSTHeap(root->left, arr, i); convert_BSTHeap(root->right, arr, i); // অ্যারে থেকে নোডে ডেটা কপি করা root->data = arr[++*i]; } // ম্যাক্স হিপে কনভার্ট করা void convert_maxheap(Node* root) { vector<int> arr; int i = -1; inorderTraversal(root, arr); convert_BSTHeap(root, arr, &i); } // পোস্ট-অর্ডার ট্রাভার্সাল প্রিন্ট করা void postorderTraversal(Node* root) { if (!root) return; postorderTraversal(root->left); postorderTraversal(root->right); cout << root->data << " "; } 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_maxheap(root); cout << "Postorder Traversal:" << endl; postorderTraversal(root); return 0; }আউটপুট
Postorder Traversal: 1 2 3 4 5 6 7