इस ट्यूटोरियल में, हम बाइनरी सर्च ट्री को अधिकतम ढेर में बदलने के लिए एक प्रोग्राम पर चर्चा करेंगे।
इसके लिए हमें एक बाइनरी सर्च ट्री प्रदान किया जाएगा। हमारा काम दिए गए बाइनरी सर्च ट्री को अधिकतम ढेर में बदलना है जैसे कि बाइनरी सर्च ट्री की स्थिति का पालन करते हुए जब तत्वों की खुद से तुलना की जाती है।
उदाहरण
#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 post order traversal void postorderTraversal(Node*); //moving in a sorted manner using 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); } 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); //copying data from array to node root->data = arr[++*i]; } //converting to max heap void convert_maxheap(Node* root) { vector<int> arr; int i = -1; inorderTraversal(root, arr); convert_BSTHeap(root, arr, &i); } //printing post order traversal 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