题目如下:
private TreeNode buildTree(TreeNode t1,TreeNode t2) {
TreeNode node = new TreeNode(-1);
if(t1 == null && t2 == null) {
return null;
}
if(t1 == null && t2 != null) {
return t2;
}
if(t1 != null && t2 == null ) {
return t1;
}
node.val = t1.val+t2.val;
node.left = buildTree(t1.left,t2.left);
node.right = buildTree(t1.right,t2.right);
return node;
}
public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
TreeNode result = buildTree(t1,t2);
return result;
}
这个问题用递归处理比较简单,我们用一个构造树的函数将 t1,t2 引入,然后返回这棵树。
这个函数呢思路也是比较简单的,首先我们创建一个树的根节点,判断t1,t2的情况,如果都为空,那结果也自然为空,当其中一个为空时,那结果也自然是另一个不为空的树,直接返回非空树就好了,最后剩下的结果就是都不为空了,结果就需要将两棵树的值加在一起作为最终结果,然后利用递归将她的左子树构造出来,再构造右子树,最后返回根节点,这个函数就完成了。