ধরুন আমাদের দুটি গাছ আছে, আমাদের পরীক্ষা করতে হবে যে কোনো নোডের বাম এবং ডান সাবট্রি যে কোনো সংখ্যক বার অদলবদল করে আমরা প্রথম গাছটিকে দ্বিতীয়টিতে রূপান্তর করতে পারি কিনা৷
সুতরাং, যদি ইনপুট মত হয়
তাহলে আউটপুট হবে 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