মনে করুন একটি বাইনারি ট্রি আছে, আমরা বারবার জোড় মানযুক্ত সব লিফ নোড ডিলিট করব। সব ডিলিট করার পর যদি শুধু রুট থাকে এবং সেটিও জোড় হয়, তবে সেটিও ডিলিট হবে।
ইনপুট এবং আউটপুট ট্রির ছবি দেওয়া আছে।
সমাধানের ধাপসমূহ
- solve() ফাংশন সংজ্ঞায়িত করুন যা root নেয়
- যদি root null হয়, তবে
- null ফেরত দিন
- root.left := solve(root.left)
- root.right := solve(root.right)
- যদি root লিফ হয় এবং root.data জোড় হয়, তবে
- null ফেরত দিন
- root ফেরত দিন
উদাহরণ
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,