二叉树的最小深度踩坑

今天做题的时候做到leetcode 111,二叉树最小深度。
看了一眼以为可以秒杀(我太天真了)
写下如下代码

 return root == null ? 0 : Math.min(minDepth(root.left),minDepth(root.right))+1;

然后。。。gg了
原因是
二叉树的最小深度踩坑_第1张图片
当存在这样左子树或者柚子树为空的情况下,使用如上代码输出为1,但1是有子节点的,所以不符合最小深度(叶子结点到根节点)的要求,测试报错。
应该排除一下这种情况

 public int minDepth(TreeNode root) {
     
        if(root == null){
     
            return 0;
        }
        if(root.left == null && root.right != null){
     
            return 1 + minDepth(root.right);
        }
        if(root.left != null && root.right == null){
     
            return 1 + minDepth(root.left);
        }
        return root == null ? 0 : Math.min(minDepth(root.left),minDepth(root.right))+1;
    }

AC

你可能感兴趣的:(LeetCode,数据结构算法,二叉树,算法,数据结构,leetcode,java)