একটি বাইনারি ট্রি দেওয়া আছে যেটির প্রতিটি নোডের মান ০ বা ১। লক্ষ্য হল যেসব সাবট্রিতে ১ নেই, সেগুলো মুছে ফেলা (প্রুন করা)।
রিকার্সিভ পদ্ধতিতে সমাধান: নোড নাল হলে নাল রিটার্ন। বাম ও ডান সাবট্রি প্রুন করুন। যদি বাম ও ডান নাল হয় এবং নোডের মান ০ হয়, তবে নাল রিটার্ন। অন্যথায় নোড রিটার্ন।
ইনপুট ট্রি: (চিত্রে দেখানো)
আউটপুট (ইনঅর্ডার ট্রাভার্সাল): ১, ১, ১, ১, ০, ১
#includeusing namespace std; class TreeNode{ public: int val; TreeNode *left, *right; TreeNode(int data){ val = data; left = 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; } }; int 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)); return 0; }
প্রুন করা ট্রির ইনঅর্ডার আউটপুট:
1, 1, 1, 1, 0, 1,