基本思路
- 判断t1和t2是否为空,给val赋值并赋值
- 分别递归t1,t2左节点和t1,t2右节点
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
TreeNode newtree = null;
int val = 0;
if(t1 != null && t2 != null){
val = t1.val + t2.val;
newtree = new TreeNode(val);
newtree.left = mergeTrees(t1.left, t2.left);
newtree.right = mergeTrees(t1.right, t2.right);
} else if( t1 != null){
newtree = new TreeNode(t1.val);
newtree.left = mergeTrees(t1.left, null);
newtree.right = mergeTrees(t1.right, null);
}else if( t2 != null){
newtree = new TreeNode(t2.val);
newtree.left = mergeTrees(null, t2.left);
newtree.right = mergeTrees(null, t2.right);
}else{
newtree = null;
}
return newtree;
}
}
改进
无需新建一个树去存放结果,在t1上操作合并递归即可
class Solution {
public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
if (t1 == null) {
return t2;
}
if (t2 == null) {
return t1;
}
// 节点的值合并
t1.val = t1.val + t2.val;
// 继续
t1.left = mergeTrees(t1.left, t2 != null ? t2.left : null);
t1.right = mergeTrees(t1.right, t2 != null ? t2.right : null);
return t1;
}
}