首页 > 其他分享 >力扣111 二叉树的最小深度

力扣111 二叉树的最小深度

时间:2023-01-28 00:22:05浏览次数:43  
标签:right TreeNode int 力扣 111 二叉树 null 节点 left

题目:

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

示例:

输入:root = [3,9,20,null,null,15,7]
输出:2

思路:

一定注意,叶子节点是没有子节点的节点。所以只是简单地把《二叉树的最大深度》中,左右子树取最大深度改成取最小深度是不对的。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int minDepth(TreeNode root) {
        if(root==null){
            return 0;
        }else{
            return getDepth(root.left,root.right);
        }
    }

    public int getDepth(TreeNode left,TreeNode right){//1.确定参数和返回值
        int count=1;
        if(left==null&&right==null){//2.确定终止条件:当左右孩子为空时,才是叶子节点
            return count;
        }
        if(left!=null&&right==null){
            count=getDepth(left.left,left.right)+1;
        }
        if(left==null&&right!=null){
            count=getDepth(right.left,right.right)+1;
        }
        if(left!=null&&right!=null){
            int count1=getDepth(left.left,left.right)+1;//3.确定单层逻辑
            int count2=getDepth(right.left,right.right)+1;
            count=count1<count2?count1:count2;//返回更小的深度值
        }
        return count;
    }
}

 

 

标签:right,TreeNode,int,力扣,111,二叉树,null,节点,left
From: https://www.cnblogs.com/cjhtxdy/p/17069551.html

相关文章

  • 力扣104 二叉树的最大深度
    题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,nu......
  • 二叉树前序、中序、后序遍历非递归写法
    packagedayone.tre;importjava.util.Stack;publicclassPreorderTraversal{/****先序遍历非递归写法*@paramhead*/publicstati......
  • 二叉树公共祖先问题
    packagedayone.tre;/****o1和o2为head二叉树中的点,找出o1和02的最近公共祖先*/publicclassTest{publicstaticNodelowestAncestor(Nodehead,Nodeo......
  • 力扣 1642. 可以到达的最远建筑 [堆]
    1642.可以到达的最远建筑给你一个整数数组 heights ,表示建筑物的高度。另有一些砖块 bricks 和梯子 ladders 。你从建筑物 0 开始旅程,不断向后面的建筑物......
  • 力扣2023.1.27---2309. 兼具大小写的最好英文字母
    给你一个由英文字母组成的字符串s,请你找出并返回s中的最好英文字母。返回的字母必须为大写形式。如果不存在满足条件的字母,则返回一个空字符串。最好英文字母的大写......
  • 力扣---167. 两数之和 II - 输入有序数组
    给你一个下标从1开始的整数数组numbers,该数组已按非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数target的两个数。如果设这两个数分别是numbers[index1......
  • 堆和二叉树的关系
    逻辑结构VS物理结构堆:逻辑结构是一颗二叉树(如下图)物理结构是一个数组(如下代码) //上图是一个堆(从小到大)可以用数组表示constheap=[-1,10,14,25,33,81,......
  • 二叉树中是否存在某值
    constbinarySearchTree=(node=tree,target=8)=>{letcurNode=nodewhile(true){if(!curNode){returnfalse}......
  • 二叉树寻找最k小值
    /***注意:left/right值若没有显示设置为null,值即为undefined*在调用二叉树前、中、后序遍历方法时,由于参数设置了默认值(tree)*所以进入了死循环*/consttree={......
  • 力扣---848. 字母移位
    有一个由小写字母组成的字符串s,和一个长度相同的整数数组shifts。我们将字母表中的下一个字母称为原字母的移位shift()(由于字母表是环绕的,'z'将会变成'a')。   ......