目 录CONTENT

文章目录

Leetcode 111.二叉树的最小深度

小王同学
2024-03-03 / 0 评论 / 0 点赞 / 30 阅读 / 0 字

Leetcode 111.二叉树的最小深度

力扣题目链接(opens new window)

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

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

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

示例:

给定二叉树 [3,9,20,null,null,15,7]

111.二叉树的最小深度1

返回它的最小深度 2.

解题思路:

标签:DFS
终止条件、返回值和递归过程:

  1. 叶子节点的定义是左孩子和右孩子都为 null 时叫做叶子节点
  2. 当 root 节点左右孩子都为空时,返回 1
  3. 当 root 节点左右孩子有一个为空时,返回不为空的孩子节点的深度
  4. 当 root 节点左右孩子都不为空时,返回左右孩子较小深度的节点值

时间复杂度:O(n),n为树的节点数量

代码实现:

class Solution {
    public int minDepth(TreeNode root) {
        if(root == null){
            return 0;
        }
        //左孩子和有孩子都为空的情况,说明到达了叶子节点,直接返回1即可
        if(root.left == null && root.right == null){
            return 1;
        }
        int leftDepth = minDepth(root.left);
        int rightDepth = minDepth(root.right);
        int res = Math.min(leftDepth,rightDepth);

        //这里其中一个节点为空,说明leftDepth和rightDepth有一个必然为0,那么记录另一侧的深度
        if(leftDepth == 0){
            res = rightDepth;
        }
        if(rightDepth == 0){
            res = leftDepth;
        }
        return res+1;
    }
}
0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区