LeetCode 111. Minimum Depth of Binary Tree 题解——Java

题目链接:https://leetcode.com/problems/minimum-depth-of-binary-tree/#/description

思路:二叉树的最小深度 = min {左子树的最小深度,右子树的做小深度 } + 1  ;使用递归求解。

需要注意的是,求二叉树的最小深度比求二叉树的最大深度稍微复杂一点,有一种情况需要考虑:当根节点只有左子树或者只有右子树时...假设某二叉树只有左子树,右子树为null,我们不能将右子树的深度设置为0,因为这样右子树的深度0将会在min{左子树最小深度, 右子树最小深度}中被选择出来,这样得到的结果是整个二叉树的最小深度为0,但是这个结果是不正确的。这种情况下正确结果是:二叉树的最小深度=左子树的最小深度+1。


Java代码如下:

public class Solution {
    public int minDepth(TreeNode root) {
       if(root == null){
			return 0;
		}
		int leftMinDepth = minDepth(root.left);
		int rightMinDepth = minDepth(root.right);
		// 当有一个分支子树为空时
		if(leftMinDepth==0){
			return rightMinDepth + 1;
		} else if(rightMinDepth==0){
			return leftMinDepth + 1;
		}
		return Math.min(leftMinDepth, rightMinDepth) + 1;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值