题目描述
已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:都存在的结点,就将结点值加起来,否则空的位置就由另一个树的结点来代替。例如:
两颗二叉树是:
Tree 1 :
1
/ \
3 2
/
5
Tree 2:
2
/ \
1 3
\ \
4 7
合并后的树为
3
/ \
4 5
/ \ \
5 4 7
示例1
输入 {1,3,2,5},{2,1,3,#,4,#,7}
返回值 {3,4,5,5,4,#,7}
博主本来想的很复杂,就是区递归查询一下有没有重复的节点,然后合并一下,后来发现其实很简单不需要那样去做下面献上代码:
public class Test06 {
public TreeNode mergeTrees (TreeNode t1, TreeNode t2) {
if (t1 == null && t2 == null) return null;//如果是两颗空树则返回空
if (t1 == null || t2 == null) return t1 == null ? t2 : t1;//如果其中一颗为空则返回另一颗
//两棵树都不为空则合并节点的值 这里合并到t1上了 当然也可以合并到t2上然后返回t2
t1.val = t1.val + t2.val;
// 合并左子树
t1.left = mergeTrees(t1.left, t2.left);
// 合并右子树
t1.right = mergeTrees(t1.right, t2.right);
return t1;
}
}