मान लीजिए कि हमारे पास एक बाइनरी ट्री है, हमें यह जांचना होगा कि क्या पत्तियों को छोड़कर पेड़ में प्रत्येक नोड के लिए, इसका मान उसके बाएं बच्चे के मूल्य और उसके दाहिने बच्चे के मूल्य के योग के समान है या नहीं।
तो, अगर इनपुट पसंद है
तो आउटपुट सही होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
फ़ंक्शन को परिभाषित करें dfs() । यह जड़ लेगा
-
अगर रूट शून्य है, तो
-
सही लौटें
-
-
यदि मूल का बायां भाग शून्य है और जड़ का दायां भाग शून्य है, तो
-
सही लौटें
-
-
बायां :=0
-
यदि रूट का बायां भाग रिक्त नहीं है, तो
-
बायां :=रूट के बाईं ओर का मान
-
-
दाएं:=0
-
यदि मूल का दायाँ अशक्त नहीं है, तो
-
दाएँ:=मूल के अधिकार का मान
-
-
सही लौटें जब (बाएं + दायां रूट के मान के समान हो) और dfs (रूट का बायां) सत्य हो और dfs (रूट का दायां) सत्य हो
-
मुख्य विधि से निम्न कार्य करें -
-
वापसी dfs(रूट)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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): def dfs(root): if root == None: return True if root.left == None and root.right == None: return True left = 0 if root.left: left = root.left.val right = 0 if root.right: right = root.right.val return (left + right == root.val) and dfs(root.left) and dfs(root.right) return dfs(root) ob = Solution() root = TreeNode(18) root.left = TreeNode(8) root.right = TreeNode(10) root.left.left = TreeNode(3) root.left.right = TreeNode(5) print(ob.solve(root))
इनपुट
root = TreeNode(18) root.left = TreeNode(8) root.right = TreeNode(10) root.left.left = TreeNode(3) root.left.right = TreeNode(5)
आउटपुट
True