मान लीजिए कि हमारे पास एक बाइनरी ट्री का हेड नोड रूट है, जहां अतिरिक्त रूप से प्रत्येक नोड का मान या तो 0 या 1 है। हमें वही ट्री ढूंढना है जहां प्रत्येक सबट्री जिसमें 1 नहीं है, को हटा दिया गया है। तो अगर पेड़ जैसा है -
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एक पुनरावर्ती विधि को हल करें () परिभाषित करें, यह नोड ले जाएगा। विधि इस तरह होगी -
-
यदि नोड शून्य है, तो अशक्त लौटें
-
नोड के बाएँ :=हल करें (नोड के बाएँ)
-
नोड का अधिकार:=हल करें (नोड के दाएं)
-
यदि नोड का बायां भाग शून्य है और नोड का दायां भी शून्य है और नोड मान 0 है, तो शून्य वापस आ जाता है
-
वापसी नोड
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#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 insert(TreeNode **root, int val){ queue<TreeNode*> q; q.push(*root); while(q.size()){ TreeNode *temp = q.front(); q.pop(); if(!temp->left){ temp->left = new TreeNode(val); return; }else{ q.push(temp->left); } if(!temp->right){ temp->right = new TreeNode(val); return; }else{ q.push(temp->right); } } } TreeNode *make_tree(vector<int> v){ TreeNode *root = new TreeNode(v[0]); for(int i = 1; i<v.size(); i++){ insert(&root, v[i]); } return root; } void tree_level_trav(TreeNode*root){ if (root == NULL) return; cout << "["; queue<TreeNode *> q; TreeNode *curr; q.push(root); q.push(NULL); while (q.size() > 1) { curr = q.front(); q.pop(); if (curr == NULL){ q.push(NULL); } else { if(curr->left) q.push(curr->left); if(curr->right) q.push(curr->right); if(curr == NULL){ cout << "null" << ", "; }else{ cout << curr->val << ", "; } } } cout << "]"<<endl; } 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(){ vector<int> v = {1,1,0,1,1,0,1,0}; TreeNode *root = make_tree(v); Solution ob; tree_level_trav(ob.pruneTree(root)); }
इनपुट
[1,1,0,1,1,0,1,0]
आउटपुट
[1, 1, 0, 1, 1, 1, ]