কম্পিউটার

পাইথনে নোড অদলবদল করে দুটি গাছ তৈরি করা যায় কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম


ধরুন আমাদের দুটি গাছ আছে, আমাদের পরীক্ষা করতে হবে যে কোনো নোডের বাম এবং ডান সাবট্রি যে কোনো সংখ্যক বার অদলবদল করে আমরা প্রথম গাছটিকে দ্বিতীয়টিতে রূপান্তর করতে পারি কিনা৷

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

পাইথনে নোড অদলবদল করে দুটি গাছ তৈরি করা যায় কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

তাহলে আউটপুট হবে True

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

  • que1 :=প্রাথমিকভাবে root0 সহ একটি সারি

  • que2 :=প্রাথমিকভাবে root1 সহ একটি সারি

  • que1 এবং que2 খালি না হলে, করুন

    • temp1 :=একটি নতুন তালিকা, temp2 :=একটি নতুন তালিকা

    • values1 :=একটি নতুন তালিকা, মান 2 :=একটি নতুন তালিকা

    • যদি que1 এবং que2 এ বিভিন্ন সংখ্যক উপাদান থাকে, তাহলে

      • রিটার্ন ফলস

    • 0 থেকে que1 − 1 এর আকারের মধ্যে i, do

      • মান 1

        এর শেষে que1[i] এর মান সন্নিবেশ করান
      • মান 2

        এর শেষে que2[i] এর মান সন্নিবেশ করান
      • যদি que1[i] এর রাইট শূন্য না হয়, তাহলে

        • temp1

          -এর শেষে que1[i]-এর ডানদিকে সন্নিবেশ করুন
      • যদি que1[i] এর বামে শূন্য না হয়, তাহলে

        • temp1

          -এর শেষে que1[i]-এর বাম দিকে ঢোকান
      • যদি que2[i] এর রাইট শূন্য না হয়, তাহলে

        • temp2

          -এর শেষে que2[i]-এর ডানদিকে সন্নিবেশ করুন
      • যদি que2[i] এর বামে শূন্য না হয়, তাহলে

        • temp2

          -এর শেষে que2[i]-এর বাম দিকে সন্নিবেশ করুন
    • যদি মান1 মান 2 এর মত না হয়, তাহলে

      • যদি মান1 বিপরীত ক্রমে মান 2 এর মত না হয়, তাহলে

        • রিটার্ন ফলস

    • que1 :=temp1, que2 :=temp2

  • রিটার্ন ট্রু

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

উদাহরণ

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 = [root0]
      que2 = [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)
         if que1[i].right:
            temp1.append(que1[i].right)
         if que1[i].left:
            temp1.append(que1[i].left)
         if que2[i].right:
            temp2.append(que2[i].right)
         if que2[i].left:
            temp2.append(que2[i].left)
      if values1 != values2:
         if values1 != values2[::-1]:
            return False
      que1 = temp1
      que2 = temp2
   return True
ob = Solution()
root = TreeNode(2)
root.right = TreeNode(4)
root.right.left = TreeNode(3)
root.right.right = TreeNode(5)
root1 = TreeNode(2)
root1.left = TreeNode(4)
root1.left.left = TreeNode(3)
root1.left.right = TreeNode(5)
print(ob.solve(root, root1))

ইনপুট

root = TreeNode(2)
root.right = TreeNode(4)
root.right.left = TreeNode(3)
root.right.right = TreeNode(5)
root1 = TreeNode(2)
root1.left = TreeNode(4)
root1.left.left = TreeNode(3)
root1.left.right = TreeNode(5)

আউটপুট

True

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

  2. পাইথনে নোড অদলবদল করে দুটি গাছ তৈরি করা যায় কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  3. পাইথনে একটি গাছ অন্য গাছের সাবট্রি কি না তা পরীক্ষা করার জন্য প্রোগ্রাম

  4. পাইথনে একটি বাইনারি গাছ সম্পূর্ণ কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম