解题的思路:
合并两个二叉树当然就是同步遍历了,对于相同位置上的一对结点t1和t2,处理策略是:
若t1和t2都存在,则只需要保留其中一个结点(如t1),将另一结点的值加到此结点上即可(如t1.val += t2.val)。
若t1或t2任一不存在,则合并后的二叉树对应位置上的结点就是存在的那个了。
若t1和t2都不存在,则合并后仍不存在。
方法一:
class AddTree{
public class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode (int x){val = x;}
}
public TreeNode MakeTree(TreeNode t1,TreeNode t2){
if((t1==null&&t2==null)||t1==null){
return t2;//如果t1 t2的value都为null或t1为null,返回t2.value
}
if(t2==null){
return t1;
}
t1.val +=t2.val;
t1.left = MakeTree(t1.left,t2.left);
t1.right = MakeTree(t1.right,t2.right);
return t1;
}
}
方法二:
class AddTree{
public class TreeNode{
int val;
TreeNode left;
Tr