题解 | #合并二叉树#
合并二叉树
http://www.nowcoder.com/practice/7298353c24cc42e3bd5f0e0bd3d1d759
基本思路:
从每个对应位置的节点上来看,树t1和t2的相加可以分成以下4种情况:
1、t1和t2的结点皆为空:
不需要相加,同样返回空值即可。
2、t1结点为空,t2结点不为空:
返回结点t2。
3、t1结点不为空,t2结点为空:
返回结点t1。
4、t1和t2的结点都不为空:
先将t2的属性值val加到t1上的val,鉴于t1、t2皆可能存在子树,于是对各自的左右子树分别进行递归操作,最后返回t1。
代码:
public class Solution {
public TreeNode mergeTrees (TreeNode t1, TreeNode t2) {
//t1和t2的四种情况
if (t1==null && t2==null)
return null;
else if (t1==null && t2!=null)
return t2;
else if (t1!=null && t2==null)
return t1;
//t1、t2都非空,递归求解,返回t1
else {
t1.val += t2.val;
t1.left = mergeTrees(t1.left, t2.left);
t1.right = mergeTrees(t1.right, t2.right);
return t1;
}
}
}