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

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


मान लीजिए हमारे पास एक बाइनरी ट्री है, जहां प्रत्येक नोड का मान या तो 0 या 1 है। हमें वही ट्री ढूंढना है जहां 1 न रखने वाले हर उपट्री को हटा दिया गया हो।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एक रिकर्सिव विधि solve() परिभाषित करें, यह नोड लेगी। विधि इस तरह होगी -

  • यदि नोड null है, तो null लौटाएं

  • नोड का left := solve(nोड का left)

  • नोड का right := solve(नोड का right)

  • यदि नोड का left null है और नोड का right भी null है और नोड का मान 0 है, तो null लौटाएं

  • नोड लौटाएं

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h> using namespace std; class TreeNode{    public:    int val;    TreeNode *left, *right;    TreeNode(int data){       val = data;       left = NULL;       right = NULL;    } }; void inorder(TreeNode *root){    if(root){       inorder(root->left);       cout << root->val << ", ";       inorder(root->right);    } } 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;    } }; main(){    TreeNode *root = new TreeNode(1);    root->left = new TreeNode(1);    root->right = new TreeNode(0);    root->left->left = new TreeNode(1);    root->left->right = new TreeNode(1);    root->right->left = new TreeNode(0);    root->right->right = new TreeNode(1);    root->left->left->left = new TreeNode(0);    Solution ob;    inorder(ob.pruneTree(root)); }

इनपुट

TreeNode *root = new TreeNode(1); root->left = new TreeNode(1); root->right = new TreeNode(0); root->left->left = new TreeNode(1); root->left->right = new TreeNode(1); root->right->left = new TreeNode(0); root->right->right = new TreeNode(1); root->left->left->left = new TreeNode(0);

आउटपुट

1, 1, 1, 1, 0, 1,

  1. C++ में जांचें कि दिया गया बाइनरी ट्री हीप है या नहीं C++ में जांचें कि दिया गया बाइनरी ट्री हीप है या नहीं

    अवधारणा दिए गए बाइनरी ट्री के संबंध में, हमें यह सत्यापित करना होगा कि इसमें हीप गुण है या नहीं। बाइनरी ट्री को हीप होने के लिए निम्नलिखित दो शर्तों को पूरा करना होगा: बाइनरी ट्री एक पूर्ण ट्री होना चाहिए (यानी अंतिम स्तर को छोड़कर सभी स्तर भरे हुए हों)। बाइनरी ट्री के प्रत्येक नोड का मान उसके चाइल

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

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

  1. C++ में जांचें कि दिया गया बाइनरी ट्री सम-ट्री है या नहीं C++ में जांचें कि दिया गया बाइनरी ट्री सम-ट्री है या नहीं

    यहां हम देखेंगे कि बाइनरी ट्री सम-ट्री (SumTree) है या नहीं, इसकी जांच कैसे करें। अब सवाल यह है कि सम-ट्री क्या है। एक सम-ट्री एक बाइनरी ट्री है जहां एक नोड अपने बच्चों के योग का मान रखता है। ट्री का रूट उसके नीचे के सभी तत्वों का पूरा योग रखता है। यह सम-ट्री का एक उदाहरण है -इसे जांचने के लिए, हम ए