इस ट्यूटोरियल में, हम बाइनरी सर्च ट्री को मिन हीप में परिवर्तित करने के लिए एक प्रोग्राम पर चर्चा करेंगे।
इसके लिए हमें एक बाइनरी सर्च ट्री प्रदान की जाएगी। हमारा कार्य दी गई बाइनरी सर्च ट्री को मिन हीप में परिवर्तित करना है जैसे कि तुलना करने पर बाइनरी सर्च ट्री की शर्त का पालन हो।
उदाहरण
#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 preorderTraversal(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); } //BST को मिन हीप में परिवर्तित करना 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); } //मिन हीप में परिवर्तित करना void convert_minheap(Node *root) { //नोड्स के मान संग्रहीत करने वाला वेक्टर vector<int> arr; int i = -1; //इनऑर्डर ट्रैवर्सल के माध्यम से आगे बढ़ना inorderTraversal(root, arr); convert_BSPheap(root, arr, &i); } //प्रीऑर्डर ट्रैवर्सल करना 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