কম্পিউটার টিউটোরিয়াল

পাইথনে বাইনারি ট্রিতে প্রতিটি নন-লিফ নোডের মান তার চাইল্ডদের যোগফলের সমান কিনা যাচাই করা

একটি বাইনারি ট্রি দেওয়া থাকলে, প্রতিটি নন-লিফ নোডের জন্য তার মান তার বাম ও ডান চাইল্ডের মানের যোগফলের সমান কিনা যাচাই করতে হবে।

উদাহরণ: রুট=১৮, বাম=৮(৩,৫), ডান=১০ → ৮+১০=১৮, ৩+৫=৮ → সব ম্যাচ → 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" যাচাই করার স্ট্যান্ডার্ড সমস্যা।

  1. পাইথনে বাইনারি ট্রি BST কিনা যাচাই করার প্রোগ্রাম

  2. পাইথনে বাইনারি ট্রি কমপ্লিট কিনা যাচাই করার প্রোগ্রাম

  3. পাইথনে গ্রাফ বাইপার্টাইট কিনা যাচাই করার প্রোগ্রাম

  4. পাইথনে BST-এ একটি মান আছে কিনা যাচাই করার প্রোগ্রাম