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

পাইথনে দুটি বাইনারি ট্রি কন্ট্রাক্ট ও মান দিয়ে সমান (Twin Trees) কিনা যাচাই করা

দুটি বাইনারি ট্রি দেওয়া থাকলে, তাদের কন্ট্রাক্ট (স্ট্রাকচার) এবং নোড মান দুটোই সমান কিনা যাচাই করতে হবে।

রিকার্সিভ সমাধান

  • দুটোই None → True
  • একটি None, অন্যটি নয় → False
  • নোড মান ভিন্ন → False
  • বাম সাবট্রি এবং ডান সাবট্রি রিকার্সিভলি চেক → solve(left0, left1) and solve(right0, right1)

পাইথন কোড

class TreeNode:
    def __init__(self, val, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

class Solution:
    def solve(self, root0, root1):
        if not root0 and not root1:
            return True
        if not root0 or not root1:
            return False
        if root0.val != root1.val:
            return False
        return (self.solve(root0.left, root1.left) and
                self.solve(root0.right, root1.right))

# টেস্ট: দুটি সমান ট্রি
ob = Solution()
root1 = TreeNode(10, TreeNode(5, TreeNode(3), TreeNode(8)), TreeNode(15))
root2 = TreeNode(10, TreeNode(5, TreeNode(3), TreeNode(8)), TreeNode(15))
print(ob.solve(root1, root2))  # True

টাইম কমপ্লেক্সিটি: O(min(n, m)), স্পেস: O(h)। এটি ট্রি ইকুয়ালিটি চেকের স্ট্যান্ডার্ড রিকার্সিভ পদ্ধতি।

  1. পাইথনে দুটি বাইনারি ট্রির লীফ ট্রাভার্সেল একই কিনা তা যাচাই করা

  2. পাইথনে দুটি বাইনারি ট্রির সকল লেভেল যুগ्मানুকরণ (anagram) কিনা যাচাই

  3. পাইথনে দুটি বাইনারি ট্রির লিফ সিকোয়েন্স মিল কিনা যাচাই

  4. পাইথনে বাইনারি ট্রিয়ের সব নোডের মান একই কিনা যাচাই করা