BFS solution
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def minDepth(self, root: TreeNode) -> int:
if not root:
return 0
q = collections.deque([(root,1)])
while q:
node, level = q.popleft()
if not node.left and not node.right:
return level
if node.left:
q.append((node.left,level+1))
if node.right:
q.append((node.right,level+1))
DFS
class Solution:
def minDepth(self, root: TreeNode) -> int:
def dfs(node,level):
l= r = float('inf')
if not node:
return level - 1
if not node.left and not node.right:
return level
if node.left:
l = dfs(node.left,level+1)
if node.right :
r = dfs(node.right,level+1)
return min(l,r)
return dfs(root,1)
without helper function
class Solution:
def minDepth(self, root: TreeNode) -> int:
if not root:
return 0
if None in [root.left,root.right]:
return max(self.minDepth(root.left),self.minDepth(root.right)) +1
return min(self.minDepth(root.left),self.minDepth(root.right)) +1