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.

Example

  1
 / \ 
2   3      Minimum depth = 2
   / \
  4   5
public class Solution {
    /**
     * @param root: The root of binary tree.
     * @return: An integer.
     */
    public int minDepth(TreeNode root) {
        if(root == null)
            return 0;
        if(root.left == null && root.right == null)
            return 1;
        
        if(root.left != null && root.right == null)
            return minDepth(root.left) + 1;
        else if(root.left == null && root.right != null)
            return minDepth(root.right) + 1;
        else
            return Math.min(minDepth(root.left), minDepth(root.right)) + 1;
    }
}