Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में BST को मैक्स हीप (Max Heap) में परिवर्तित करें


इस ट्यूटोरियल में, हम बाइनरी सर्च ट्री को मैक्स हीप में परिवर्तित करने के लिए एक प्रोग्राम पर चर्चा करेंगे।

इसके लिए हमें एक बाइनरी सर्च ट्री प्रदान की जाएगी। हमारा कार्य दी गई बाइनरी सर्च ट्री को मैक्स हीप में परिवर्तित करना है जैसे कि तुलना करने पर बाइनरी सर्च ट्री की शर्त का पालन हो।

उदाहरण

#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

  1. C++ में BST नोड्स गिनना जो दी गई रेंज में हैं C++ में BST नोड्स गिनना जो दी गई रेंज में हैं

    हमें नोड्स से बना एक बाइनरी सर्च ट्री दिया गया है और एक रेंज भी दी गई है और कार्य उन नोड्स की संख्या की गणना करना है जो दी गई रेंज में हैं और परिणाम प्रदर्शित करना है। एक बाइनरी सर्च ट्री (BST) एक ट्री है जिसमें सभी नोड्स नीचे उल्लिखित गुणों का पालन करते हैं: एक नोड का बायां सबट्री उस नोड की कुंजी

  1. C++ में बाइनोमियल हीप C++ में बाइनोमियल हीप

    बाइनोमियल हीप को बाइनरी हीप के विस्तार के रूप में परिभाषित किया गया है जो बाइनरी हीप द्वारा प्रदान किए गए अन्य ऑपरेशन्स के साथ तेज़ मर्ज या यूनियन ऑपरेशन प्रदान करता है।एक बाइनोमियल हीप को बाइनोमियल ट्रीज़ के संग्रह के रूप में माना जाता है।बाइनोमियल ट्री क्या है?k क्रम का एक बाइनोमियल ट्री k-1 क्रम

  1. C++ में मैक्स हीप में न्यूनतम एलिमेंट C++ में मैक्स हीप में न्यूनतम एलिमेंट

    समस्या कथनमैक्स हीप में सबसे कम मान वाला एलिमेंट ढूंढें।नीचे दिए गए मैक्स हीप पर विचार करें।मैक्स हीप में रूट नोड का मान हमेशा उसके बच्चों से अधिक होता है। इस गुण के कारण, हम निष्कर्ष निकाल सकते हैं कि मान लीफ नोड्स में से एक में मौजूद होगा। यदि हीप में n नोड्स हैं तो ceil(n/2) लीफ होंगे।मैक्स हीप ए