解法一
同时遍历两棵树,判断稍微多做一些,其他和一棵树遍历差不多。
/**
* 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) {
if ((t1 == null) && (t2 == null)) {
return null;
}
int sum = 0;
if (t1 != null) {
sum += t1.val;
}
if (t2 != null) {
sum += t2.val;
}
TreeNode newNode = new TreeNode(sum);
// Tree 1为空
if (t1 == null) {
if (t2.left != null) {
newNode.left = mergeTrees(null, t2.left);
}
if (t2.right != null) {
newNode.right = mergeTrees(null, t2.right);
}
} else if (t2 == null) { // Tree 2为空
if (t1.left != null) {
newNode.left = mergeTrees(t1.left, null);
}
if (t1.right != null) {
newNode.right = mergeTrees(t1.right, null);
}
} else { // 均不为空
newNode.left = mergeTrees(t1.left, t2.left);
newNode.right = mergeTrees(t1.right, t2.right);
}
return newNode;
}
}