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

C++ में बाइनरी ट्री प्रूनिंग


मान लीजिए हमारे पास एक बाइनरी ट्री का हेड नोड root है, जहाँ प्रत्येक नोड का मान या तो 0 या 1 है। हमें वही ट्री लौटाना है जहाँ हर वह सबट्री हटा दी गई हो जिसमें 1 नहीं है।

उदाहरण: इनपुट ट्री [1,1,0,1,1,0,1,0] के लिए, आउटपुट ट्री में केवल वही नोड्स रहेंगे जिनके सबट्री में कम से कम एक 1 है।

पोस्ट-ऑर्डर रिकर्सन

  1. रिकर्सिव मेथड pruneTree(node) परिभाषित करें।
  2. यदि node null है, तो null लौटाएँ।
  3. node->left = pruneTree(node->left)।
  4. node->right = pruneTree(node->right)।
  5. यदि node->left == null && node->right == null && node->val == 0, तो null लौटाएँ।
  6. अन्यथा node लौटाएँ।

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

class TreeNode {
public:
    int val;
    TreeNode *left, *right;
    TreeNode(int data) { val = data; left = NULL; right = NULL; }
};

class Solution {
public:
    TreeNode* pruneTree(TreeNode* node) {
        if (!node) return NULL;
        node->left = pruneTree(node->left);
        node->right = pruneTree(node->right);
        if (!node->left && !node->right && !node->val) {
            return NULL;
        }
        return node;
    }
};

// टेस्ट के लिए लेवल ऑर्डर ट्रैवर्सल प्रिंट
void printTree(TreeNode* root) {
    if (!root) return;
    queue<TreeNode*> q;
    q.push(root);
    cout << "[";
    while (!q.empty()) {
        TreeNode* curr = q.front(); q.pop();
        if (curr) {
            cout << curr->val << ", ";
            q.push(curr->left);
            q.push(curr->right);
        } else {
            cout << "null, ";
        }
    }
    cout << "]" << endl;
}

int main() {
    // ट्री बनाने का कोड
    Solution ob;
    // TreeNode* root = make_tree(...);
    // printTree(ob.pruneTree(root));
    return 0;
}

इनपुट

[1,1,0,1,1,0,1,0]

आउटपुट

[1, 1, 0, 1, 1, 1, ]
  1. C++ में बाइनरी ट्री की अधिकतम चौड़ाई C++ में बाइनरी ट्री की अधिकतम चौड़ाई

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें ट्री की अधिकतम चौड़ाई ढूंढनी है। एक लेवल की चौड़ाई उस लेवल के सबसे बाएँ और सबसे दाएँ नॉन-नल नोड्स के बीच की दूरी है (बीच के नल नोड्स भी गिने जाते हैं)। उदाहरण: ट्री [1,3,2,5,3,null,9] के लिए अधिकतम चौड़ाई 4 है (अंतिम लेवल [5,3,null,9] की लंबाई 4)। BFS +

  1. C++ में अधिकतम बाइनरी ट्री निर्माण C++ में अधिकतम बाइनरी ट्री निर्माण

    मान लीजिए हमारे पास एक पूर्णांक सरणी है जिसके सभी तत्व अद्वितीय हैं। एक अधिकतम बाइनरी ट्री निम्न नियमों से बनता है: रूट सरणी का अधिकतम तत्व होता है। बायाँ सबट्री अधिकतम तत्व के बाएँ भाग से बने सबसरणी का अधिकतम ट्री होता है। दायाँ सबट्री अधिकतम तत्व के दाएँ भाग से बने सबसरणी का अधिकतम ट्री होता है।

  1. C++ में बाइनरी ट्री को बाइनरी सर्च ट्री में रूपांतरण C++ में बाइनरी ट्री को बाइनरी सर्च ट्री में रूपांतरण

    एक बाइनरी ट्री एक विशेष प्रकार का ट्री है जिसमें ट्री का प्रत्येक नोड अधिकतम दो चाइल्ड नोड रख सकता है। इन चाइल्ड नोड्स को राइट चाइल्ड और लेफ्ट चाइल्ड के नाम से जाना जाता है। एक साधारण बाइनरी ट्री है - बाइनरी सर्च ट्री (BST) एक विशेष प्रकार का ट्री है जो निम्नलिखित नियमों का पालन करता है - बाएं चाइ