একটি বাইনারি ট্রি দেওয়া থাকলে, প্রতিটি নন-লিফ নোডের জন্য তার মান তার বাম ও ডান চাইল্ডের মানের যোগফলের সমান কিনা যাচাই করতে হবে।
উদাহরণ: রুট=১৮, বাম=৮(৩,৫), ডান=১০ → ৮+১০=১৮, ৩+৫=৮ → সব ম্যাচ → True।
রিকার্সিভ DFS সমাধান
dfs(root): বেস কেসেNoneবা লিফ নোড →True।- বাম ও ডান চাইল্ডের মান যোগ করুন (নেই তবে ০)।
- চেক:
left + right == root.valএবং রিকার্সিভলি বাম ও ডান সাবট্রি চেক।
পাইথন কোড
class TreeNode:
def __init__(self, data, left=None, right=None):
self.val = data
self.left = left
self.right = right
class Solution:
def solve(self, root):
def dfs(root):
if root is None:
return True
if root.left is None and root.right is None:
return True
left = root.left.val if root.left else 0
right = root.right.val if root.right else 0
return (left + right == root.val and
dfs(root.left) and
dfs(root.right))
return dfs(root)
# টেস্ট
ob = Solution()
root = TreeNode(18, TreeNode(8, TreeNode(3), TreeNode(5)), TreeNode(10))
print(ob.solve(root)) # True
টাইম কমপ্লেক্সিটি: O(n), স্পেস: O(h)। এটি "Children Sum Property" যাচাই করার স্ট্যান্ডার্ড সমস্যা।