您的位置:首页 > 编程语言 > Java开发

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

2017-03-13 18:20 453 查看
题目链接: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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: