ধরুন আমাদের একটি বাইনারি গাছ আছে, আমরা বারবার এমন সব পাতা মুছে ফেলব যেগুলোর সমান মান আছে। সমস্ত মুছে ফেলার পরে, যদি এটিতে শুধুমাত্র জোড় মান সহ রুট থাকে তবে সেটিও মুছে যাবে।
সুতরাং, যদি ইনপুট মত হয়
তাহলে আউটপুট হবে
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি ফাংশন সংজ্ঞায়িত করুন solve()। এটি রুট নেবে
-
যদি রুট শূন্য হয়, তাহলে
-
রিটার্ন নাল
-
-
মূলের বাম :=সমাধান (মূলের বাম)
-
মূলের অধিকার :=সমাধান (মূলের ডান)
-
যদি মূল হয় পাতা এবং মূলের ডেটা জোড় হয়, তাহলে
-
রিটার্ন নাল
-
-
রিটার্ন রুট
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class TreeNode: def __init__(self, data, left = None, right = None): self.data = data self.left = left self.right = right def inorder(root): if root: inorder(root.left) print(root.data, end = ', ') inorder(root.right) class Solution: def solve(self, root): if not root: return None root.left = self.solve(root.left) root.right = self.solve(root.right) if not root.left and not root.right and root.data % 2 == 0: return None return root ob = Solution() root = TreeNode(13) root.left = TreeNode(12) root.right = TreeNode(14) root.right.left = TreeNode(16) root.right.right = TreeNode(22) root.right.left.left = TreeNode(4) root.right.left.right = TreeNode(7) ob.solve(root) inorder(root)
ইনপুট
root = TreeNode(13) root.left = TreeNode(12) root.right = TreeNode(14) root.right.left = TreeNode(16) root.right.right = TreeNode(22) root.right.left.left = TreeNode(4) root.right.left.right = TreeNode(7)
আউটপুট
13, 16, 7, 14,