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

二、解题思路
递归
情况分析:
条件1:当root节点左右孩子都为空时,返回1
条件2:当root节点左右孩子其中一个为空时,那么返回不为空的孩子节点的深度
条件3:当root节点左右孩子都不为空时,返回左右孩子较小深度的值
二、代码演示
class Solution {
public int minDepth(TreeNode root) {
if(root==null){
return 0;
}
//条件1
if(root.left==null && root.right==null){
return 1;
}
//条件2
int leftDepth = minDepth(root.left);
int rightDepth = minDepth(root.right);
if(root.left==null || root.right==null){
//左右孩子其中一个为空时,说明其中一个孩子的深度为0,所以可以返回leftDepth + rightDepth + 1
return leftDepth + rightDepth + 1;
}
//条件3
return Math.min(leftDepth,rightDepth)+1;
}
}
下面这几道题是同类型的题,可以同时复习查看:
24_二叉树的最小深度
26_二叉树的最大深度
29_二叉树的深度
41_N叉数的最大深度
883

被折叠的 条评论
为什么被折叠?



