Given a binary tree, find its minimum depth.
The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
// DFS
public static int minDepth(TreeNode root){
if(root == null) return 0;
if(root.left==null && root.right==null) return 1;
int min = Integer.MAX_VALUE;
if(root.left!=null) min = Math.min(min,minDepth(root.left)+1) ;
if(root.right!=null) min = Math.min(min,minDepth(root.right)+1);
return min;
}
// BFS
public static int minDepth2(TreeNode root){
if(root == null)
return 0;
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
int depth = 0;
while(!queue.isEmpty()){
depth++;
Queue<TreeNode> currQ = new LinkedList<>();
while(!queue.isEmpty()){
TreeNode node = queue.poll();
if(node.left == null && node.right == null)
return depth;
if(node.left!=null) currQ.add(node.left);
if(node.right!=null) currQ.add(node.right);
}
queue = currQ;
}
return 0;
}