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

পাইথনে বাইনারি ট্রি সিমেট্রিক (সমমিতি) কিনা যাচাই করা

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

উদাহরণ: রুট=১, বাম=২(বাম=৩, ডান=৪), ডান=২(বাম=৪, ডান=৩) → True।

রিকার্সিভ সমাধান (দুটি নোড সমान्तরাল চেক)

রুটের বাম ও ডান সাবট্রি একসাথে ট্রভার্স করুন: solve(node1, node2)।

  • দুটোই None → True
  • একটি None → False
  • মান ভিন্ন → False
  • রিকার্সিভ কল: solve(node1.left, node2.right) and solve(node1.right, node2.left) (মিররিং!)।

পাইথন কোড

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

class Solution:
    def isSymmetric(self, root):
        return self.solve(root, root)
    
    def solve(self, node1, node2):
        if not node1 and not node2:
            return True
        if not node1 or not node2:
            return False
        return (node1.data == node2.data and
                self.solve(node1.left, node2.right) and
                self.solve(node1.right, node2.left))

# টেস্ট
root = TreeNode(1, TreeNode(2, TreeNode(3), TreeNode(4)), TreeNode(2, TreeNode(4), TreeNode(3)))
ob1 = Solution()
print(ob1.isSymmetric(root))  # True

টাইম কমপ্লেক্সিটি: O(n), স্পেস: O(h)। সিমেট্রিক ট্রি চেকের ক্লাসিক রিকার্সিভ প্যাটার্ন।

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

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

  3. পাইথনে দেওয়া বাইনারি ট্রি হিপ কিনা চেক করুন

  4. দেওয়া স্ট্রিংটি পাইথন কিওয়ার্ড কিনা চেক করার প্রোগ্রাম