1、看一种正确写法
public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
if (t1==null&&t2==null) {
return null;
}
else if(t2==null&&t1!=null) {
return t1;
}else if(t2!=null&&t1==null){
return t2;
}
//巨坑如果直接使用多个if判断的话就算写的没问题,还是会报错,没有返回值
t1.val+=t2.val;
t1.left=mergeTrees(t1.left,t2.left);
t1.right=mergeTrees(t1.right,t2.right);
return t1;
}
2、错误写法
public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
if(t1!=null&&t2!=null) {
t1.val+=t2.val;
t1.left=mergeTrees(t1.left,t2.left);
t1.right=mergeTrees(t1.right,t2.right);
}else if (t1==null&&t2==null) {
return null;
}
else if(t2==null&&t1!=null) {
return t1;
}else {
return t2;
}
}
其实上面两种写法我认为在逻辑是等价的,但是如果在2中把返回值都写在if里就会报错。