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