1.题目

    给定一个二叉树,找出其最小深度。

    最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

    说明:叶子节点是指没有子节点的节点。

    示例1:

    111.二叉树的最小深度 - 图1

    1. 输入:root = [3,9,20,null,null,15,7]
    2. 输出:2
    3. 输入:root = [2,null,3,null,4,null,5,null,6]
    4. 输出:5

    2.思路

    先来理解一下什么是二叉树的最小深度

    最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

    当二叉树为null时,最小深度为0

    当二叉树只有根节点时,最小深度为1

    当二叉树有左右子树时,最小深度为左树与右树最小深度+1

    111.二叉树的最小深度 - 图2

    (该图转载自:画解算法:111. 二叉树的最小深度

    我们直接遍历整颗树,递归的去求左右树的最小深度,然后返回左右树的最小深度+1的值

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