下面代码,输出结果-2147483647,很奇怪,应该输出一个较大值,最小 也是1
class Solution {
public int minDepth(TreeNode root) {
if(root==null){
return 0;
}
int left=Integer.MAX_VALUE;
int right=Integer.MAX_VALUE;
if(root.left!=null){
left=minDepth(root.left);
}
if(root.right!=null){
right=minDepth(root.right);
}
return Math.min(left,right)+1;
}
}
经过查阅博客,发现如果max=left=right=Integer.MAX_VALUE时,对其进行计算max+1,会导致数据溢出,max=Integer.MIN_VALUE,所以在使用数据的边界条件时,务必关注一下数据溢出问题
修改为以下代码,运算正确
/**
* 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;
}
int left=Integer.MAX_VALUE;
int right=Integer.MAX_VALUE;
if(root.left!=null){
left=minDepth(root.left);
}
if(root.right!=null){
right=minDepth(root.right);
}
if(left==Integer.MAX_VALUE&&right==Integer.MAX_VALUE){
return 1;
}
return Math.min(left,right)+1;
}
}