मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें यह जांचना होगा कि सभी पत्ते समान स्तर पर हैं या नहीं।
तो, अगर इनपुट पसंद है
तो आउटपुट सही होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
फ़ंक्शन को परिभाषित करें dfs() । यह जड़ लेगा, d
-
अगर रूट शून्य नहीं है, तो
-
अगर रूट का बायां हिस्सा शून्य है और रूट का दायां हिस्सा शून्य है, तो
-
गहराई के अंत में d डालें
-
-
अन्यथा,
-
dfs (रूट के बाएँ, d + 1)
-
dfs (रूट का दाहिना भाग, d + 1)
-
-
-
मुख्य विधि से, निम्न कार्य करें -
-
गहराई :=एक नई सूची
-
dfs(रूट, 0)
-
जब गहराई का केवल एक मान हो तो सही लौटें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class TreeNode: def __init__(self, value): self.val = value self.left = None self.right = None class Solution: def solve(self, root): self.depth = [] self.dfs(root, 0) return len(set(self.depth)) == 1 def dfs(self, root, depth): if root: if not root.left and not root.right: self.depth.append(depth) else: self.dfs(root.left, depth + 1) self.dfs(root.right, depth + 1) ob = Solution() root = TreeNode(5) root.left = TreeNode(4) root.left.left = TreeNode(2) root.right = TreeNode(10) root.right.left = TreeNode(7) root.right.right = TreeNode(15) print(ob.solve(root))
इनपुट
root = TreeNode(5) root.left = TreeNode(4) root.left.left = TreeNode(2) root.right = TreeNode(10) root.right.left = TreeNode(7) root.right.right = TreeNode(15)
आउटपुट
True