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