मान लीजिए कि हमारे पास दो बाइनरी ट्री हैं। हमें यह जांचना होगा कि दूसरा पेड़ पहले वाले का उप-वृक्ष है या नहीं।
तो, अगर इनपुट पसंद है
तो आउटपुट ट्रू होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
फ़ंक्शन को हल करें () परिभाषित करें। यह जड़ लेगा, लक्ष्य
-
यदि रूट शून्य है और लक्ष्य भी शून्य है, तो
-
सही लौटें
-
-
यदि रूट शून्य है या लक्ष्य शून्य है, तो
-
झूठी वापसी
-
-
यदि रूट का मान लक्ष्य के मान के समान है, तो
-
हल करें (रूट के बाएं, लक्ष्य के बाएं) और हल करें (रूट के दाएं, लक्ष्य के दाएं)
-
-
अन्यथा,
-
हल करें (रूट के बाएं, लक्ष्य) या हल करें (रूट का अधिकार, लक्ष्य)
-
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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