কম্পিউটার

পাতার ক্রম দুটি পাতার সমান নাকি পাইথনে নয় তা পরীক্ষা করার জন্য প্রোগ্রাম


ধরুন আমাদের দুটি বাইনারি গাছ আছে; উভয় গাছের বাম থেকে ডানে পাতার ক্রম একই কিনা তা আমাদের পরীক্ষা করতে হবে৷

সুতরাং, যদি ইনপুট মত হয়

পাতার ক্রম দুটি পাতার সমান নাকি পাইথনে নয় তা পরীক্ষা করার জন্য প্রোগ্রাম

তাহলে আউটপুটটি True হবে কারণ উভয় গাছের জন্য ক্রমটি [2, 6]।

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

  • c :=একটি নতুন তালিকা
  • একটি ফাংশন inorder() সংজ্ঞায়িত করুন। এটি রুট গ্রহণ করবে, এবং c
  • যদি c শূন্য হয়, তাহলে
    • c :=একটি নতুন তালিকা
  • যদি রুট নাল না হয়, তাহলে
    • অভ্যন্তরীণ (মূলের বামে, গ)
    • মূলের বাম অংশ যদি নাল হয় এবং রুটের ডানদিকে শূন্য হয়, তাহলে
      • c এর শেষে রুটের মান সন্নিবেশ করান
    • অভ্যন্তরীণ (মূলের ডানদিকে, গ)
  • রিটার্ন c
  • প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন:
  • যদি inorder(root0) inorder(root1) এর মত হয়, তাহলে
    • সত্য ফেরান
  • অন্যথায়,
    • মিথ্যে ফেরত দিন

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

উদাহরণ

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

class Solution:
   c = []

   def inorder(self, root, c=None):
      if c is None:
         c = []
      if root:
         self.inorder(root.left, c)
         if not root.left and not root.right:
            c.append(root.val)
            self.inorder(root.right, c)
      return c

   def solve(self, root0, root1):
      if self.inorder(root0) == self.inorder(root1):
         return True
      else:
         return False

ob = Solution()
root1 = TreeNode(1)
root1.right = TreeNode(3)
root1.right.left = TreeNode(2)
root1.right.right = TreeNode(6)

root2 = TreeNode(1)
root2.left = TreeNode(3)
root2.right = TreeNode(6)
root2.left.left = TreeNode(2)
print(ob.solve(root1, root2))

ইনপুট

root1 = TreeNode(1)
root1.right = TreeNode(3)

root1.right.left = TreeNode(2)

root1.right.right = TreeNode(6) 

root2 = TreeNode(1)

root2.left = TreeNode(3)

root2.right = TreeNode(6)

root2.left.left = TreeNode(2)

আউটপুট

True

  1. আমরা এমন একটি গাছকে রঙ করতে পারি কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম যেখানে কোনও সংলগ্ন নোডের রঙ একই রকম নেই বা পাইথনে নেই

  2. প্রদত্ত গ্রাফটি পাইথনে দ্বিপক্ষীয় কি না তা পরীক্ষা করার জন্য প্রোগ্রাম

  3. দুটি তালিকা বৃত্তাকারভাবে অভিন্ন কিনা তা পরীক্ষা করার জন্য পাইথন প্রোগ্রাম

  4. পাইথন প্রোগ্রাম একটি তালিকা খালি কি না পরীক্ষা করতে?