力扣-617-合并二叉树

题目:
617.Merge Two Binary Trees(easy)
Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not.

You need to merge them into a new binary tree. The merge rule is that if two nodes overlap, then sum node values up as the new value of the merged node. Otherwise, the NOT null node will be used as the node of new tree.

Example 1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Input: 
Tree 1 Tree 2
1 2
/ \ / \
3 2 1 3
/ \ \
5 4 7
Output:
Merged tree:
3
/ \
4 5
/ \ \
5 4 7

Note: The merging process must start from the root nodes of both trees.

题目大意:
给定两个二叉树,将对应位置上的结点值相加成为新的结点值,如果原结点中有null值,则将另一个结点的值直接赋值。
如上例,图示的很清晰。

解题思路:
典型递归例题,不多赘述,代码可以记作模板。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
Java:

public TreeNode mergeTrees(TreeNode t1,TreeNode t2){
if(t1 == null && t2 == null) return null;
else if(t1 == null) return t2;
else if(t2 == null) return t1;
else{
TreeNode root = new TreeNode(t1.val + t2.val);
root.left = mergeTrees(t1.left,t2.left);
root.right = mergeTrees(t1.right,t2.right);
return root;
}
}