1、前言
题目描述2、思路
合并二叉树这道题,我是完全列出了三种情况,然后按照这三种情况依次处理,到了最后是把所有的修改都放到 t1 上面,也就是在建立树的过程中不修改 t2 的值。
我看题解中也有一种情况也是修改 t2 的值,但是会把 t1 的指针连到 t2 上,也有那种新建节点的,到了最后还是直连节点。所以代码中会给出新建节点和在 t1 上修改的。
3、代码
public class Q617_MergeTrees {
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if(root1 == null && root2 == null){
return null;
}
if(root1 == null || root2 == null){
return root1 == null ? root2 : root1;
}
root1.val += root2.val;
root1.left = mergeTrees(root1.left, root2.left);
root1.right = mergeTrees(root1.right, root2.right);
return root1;
}
public TreeNode mergeTrees2(TreeNode root1, TreeNode root2) {
if(root1 == null && root2 == null){
return null;
}
TreeNode node = new TreeNode();
if(root1 != null && root2 == null){
node.val = root1.val;
node.left = mergeTrees(root1.left, null);
node.right = mergeTrees(root1.right, null);
}else if(root1 != null && root2 != null){
node.val = root1.val + root2.val;
node.left = mergeTrees(root1.left, root2.left);
node.right = mergeTrees(root1.right, root2.right);
}else if(root1 == null && root2 != null){
node.val = root2.val;
node.left = mergeTrees(null, root2.left);
node.right = mergeTrees(null, root2.right);
}
return node;
}
}
网友评论