ধরুন আমাদের দুটি বাইনারি গাছ আছে, আমাদের পরীক্ষা করতে হবে যে তারা তাদের গঠন এবং মান অনুসারে ঠিক একই রকম কিনা। আমরা তাদের যমজ গাছ বলতে পারি।
সুতরাং, যদি ইনপুট মত হয়
তাহলে প্রথম জোড়ার জন্য আউটপুট হবে True, দ্বিতীয় জুটির জন্য মিথ্যা এবং তৃতীয় জুটির জন্য যেমন দ্বিতীয় ও তৃতীয় আইটেম আলাদা এবং গঠন যথাক্রমে আলাদা।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি পদ্ধতি সংজ্ঞায়িত করুন সমাধান(), এটি দুটি রুট গ্রহণ করবে
-
যদি root0 নাল হয় এবং root1 নাল হয়, তাহলে
-
রিটার্ন ট্রু
-
-
যদি root0 নাল হয় বা root1 নাল হয়, তাহলে
-
রিটার্ন ফলস
-
-
যদি root0-এর মান root1-এর মানের সমান না হয়, তাহলে
-
রিটার্ন ফলস
-
-
সমাধান (root0 এর বাম, root1 এর বামে) এবং সমাধান (root0 এর ডান, root1 এর ডান) সত্য হলে সত্য ফেরত দিন, অন্যথায় মিথ্যা।
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class TreeNode: def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right class Solution: def solve(self, root0, root1): if not root0 and not root1: return True if not root0 or not root1: return False if root0.val != root1.val: return False return self.solve(root0.left, root1.left) and self.solve(root0.right, root1.right) ob = Solution() root1 = TreeNode(10) root1.left = TreeNode(5) root1.right = TreeNode(15) root1.left.left = TreeNode(3) root1.left.right = TreeNode(8) root2 = TreeNode(10) root2.left = TreeNode(5) root2.right = TreeNode(15) root2.left.left = TreeNode(3) root2.left.right = TreeNode(8) print(ob.solve(root1, root2))
ইনপুট
root1 = TreeNode(10) root1.left = TreeNode(5) root1.right = TreeNode(15) root1.left.left = TreeNode(3) root1.left.right = TreeNode(8) root2 = TreeNode(10) root2.left = TreeNode(5) root2.right = TreeNode(15) root2.left.left = TreeNode(3) root2.left.right = TreeNode(8)
আউটপুট
True