111. Minimum Depth of Binary Tree
class Solution:
def minDepth(self, root: Optional[TreeNode]) -> int:
def dfs(node):
if not node:
return 0
left = dfs(node.left)
right = dfs(node.right)
if not left and not right:
return 1
if left and right:
return min(left, right) + 1
if left:
return left + 1
return right + 1
return dfs(root)
class Solution(object):
def minDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if not root:
return 0
return self.iterative_level([root], 1)
def iterative_level(self, nodes, i):
next_level = []
for node in nodes:
if not node.left and not node.right:
return i
if node.left:
next_level.append(node.left)
if node.right:
next_level.append(node.right)
return self.iterative_level(next_level, i+1)