কম্পিউটার

পাইথনে সিমেট্রিক ট্রি


ধরুন আমাদের একটি বাইনারি গাছ আছে। গাছটি সিমেট্রিক ট্রি কি না তা দেখতে হবে। একটি গাছকে প্রতিসাম্য বলা হবে যদি আমরা এটির মিরর ইমেজ গ্রহণ করি তখন এটি একই হয়। এই দুটি গাছ থেকে, প্রথমটি প্রতিসম, কিন্তু দ্বিতীয়টি নয়৷

পাইথনে সিমেট্রিক ট্রি

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব৷

  • আমরা নিম্নলিখিত ধাপগুলিকে পুনরাবৃত্তভাবে কল করব৷ ফাংশনটি সল্ভ (রুট, রুট)
  • হবে
  • যদি নোড 1 এবং নোড 2 খালি থাকে, তাহলে সত্য ফেরত দিন
  • যদি node1 বা node2 খালি হয়, তাহলে মিথ্যা ফেরত দিন
  • সত্যে ফিরে আসে যখন node1.val =node2.val এবং solve(node1.left, node2.right) এবং solve(node1.right, node2.left)

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.data = data
      self.left = left
      self.right = right
def insert(temp,data):
   que = []
   que.append(temp)
   while (len(que)):
      temp = que[0]
      que.pop(0)
      if (not temp.left):
         if data is not None:
            temp.left = TreeNode(data)
         else:
            temp.left = TreeNode(0)
         break
      else:
         que.append(temp.left)
      if (not temp.right):
         if data is not None:
            temp.right = TreeNode(data)
         else:
            temp.right = TreeNode(0)
         break
      else:
         que.append(temp.right)
def make_tree(elements):
   Tree = TreeNode(elements[0])
   for element in elements[1:]:
      insert(Tree, element)
   return Tree
class Solution(object):
   def isSymmetric(self, root):
      """
      :type root: TreeNode
      :rtype: bool
      """
      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
      # print(node1.val, node2.val)
      return node1.data == node2.data and
self.solve(node1.left,node2.right) and
self.solve(node1.right,node2.left)
tree1 = make_tree([1,2,2,3,4,4,3])
tree2 = make_tree([1,2,2,3,4,None,3])
ob1 = Solution()
print(ob1.isSymmetric(tree1))
print(ob1.isSymmetric(tree2))

ইনপুট

tree1 = make_tree([1,2,2,3,4,4,3])
tree2 = make_tree([1,2,2,3,4,None,3])

আউটপুট

True
False

  1. পাইথনে বাইনারি ট্রি ব্যাস

  2. পাইথনে বাইনারি ট্রি ইনভার্ট করুন

  3. পাইথনে বাইনারি গাছের সর্বোচ্চ গভীরতা

  4. পাইথনে সিমেট্রিক ট্রি