Leetcode111. 二叉树的最小深度

Leetcode111. 二叉树的最小深度

题目描述

/**
     * 给定一个二叉树,找出其最小深度。
     *
     * 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
     *
     * 说明:叶子节点是指没有子节点的节点。
     */

思路分析

  1. 求二叉树的最小深度,可以使用深度优先的思路
  2. 定义一个变量保存二叉树的最小深度,默认为整数的最大值,然后每次使用min方法,记录最小值
  3. 递归计算每一层的高度,然后和min做比较
  4. 详解见下

源码及分析

/**
     *
     * @param root 树的根节点
     * @return 返回二叉树的最小深度
     */
    public int minDepth(TreeNode root) {
        //如果树为空
        if (root == null){
            return 0;
        }
        //如果树只有一个根节点
        if (root.left == null && root.right ==null){
            return 1;
        }
        //定义变量记录树的最小深度,默认为最大整数
        int min = Integer.MAX_VALUE;
        //递归计算每一层的高度,min始终记录最小值
        if (root.left != null){
            min = Math.min(minDepth(root.left),min);
        }
        if (root.right != null){
            min = Math.min(minDepth(root.right),min);
        }
        return min + 1;
    }
posted @ 2021-09-11 09:27  mx_info  阅读(36)  评论(0)    收藏  举报