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

পাইথনে দুটি ট্রি নোড স왪 করায় সমান হয় কিনা যাচাই করা (Flip Equivalent Trees)

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

BFS + লেভেল-ওয়াইজ সমাধান

  • দুটি কিউ দিয়ে লেভেল অর্ডার ট্রভার্সাল।
  • প্রতিটি লেভেলে নোড মানগুলো কালেক্ট করুন।
  • নেক্সট লেভেলের জন্য: ট্রি-১-এর নোডের ডান পাশেলোফ্ট, বাম পাশেরাইট পুশ করুন (স왪 অনুকরণ)। ট্রি-২-এর জন্য নরমাল পুশ।
  • প্রতিটি লেভেলে মানগুলো সমান কিনা চেক করুন (অথবা রিভার্স সমান কিনা)।

পাইথন কোড

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

class Solution:
    def solve(self, root0, root1):
        que1, que2 = [root0], [root1]
        while que1 and que2:
            temp1, temp2 = [], []
            values1, values2 = [], []
            if len(que1) != len(que2):
                return False
            for i in range(len(que1)):
                values1.append(que1[i].val)
                values2.append(que2[i].val)
                # Tree 0: Flip simulation (Right first, then Left)
                if que1[i].right:
                    temp1.append(que1[i].right)
                if que1[i].left:
                    temp1.append(que1[i].left)
                # Tree 1: Normal
                if que2[i].right:
                    temp2.append(que2[i].right)
                if que2[i].left:
                    temp2.append(que2[i].left)
            if values1 != values2 and values1 != values2[::-1]:
                return False
            que1, que2 = temp1, temp2
        return True

# টেস্ট
ob = Solution()
root = TreeNode(2, None, TreeNode(4, TreeNode(3), TreeNode(5)))
root1 = TreeNode(2, TreeNode(4, TreeNode(3), TreeNode(5)), None)
print(ob.solve(root, root1))  # True

টাইম কমপ্লেক্সিটি: O(n), স্পেস: O(w) (w = ম্যাক্সimum-width)। এটি লিটকোড "Flip Equivalent Binary Trees" সমস্যা।

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

  2. পাইথনে দুটি ট্রি নোড স왪 করায় সমান হয় কিনা যাচাই করা (Flip Equivalent Trees)

  3. পাইথনে একটি ট্রি অন্য ট্রির সাবট্রি কিনা যাচাই করা

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