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