617. Merge Two Binary Trees (合并两个二叉树)
1. 题目翻译
将两个二叉树合并为一个二叉树,如果两个二叉树有重叠的点,新的二叉树该点的值为两个二叉树该点值的和。
例子:
输入:
Tree 1 Tree 2
1 2
/ \ / \
3 2 1 3
/ \ \
5 4 7
输出:
Merged tree:
3
/ \
4 5
/ \ \
5 4 7
2. 解题方法
递归两棵树,如果两棵树该点都不为空,那么就将两个值相加并保存到T1的点中。如果其中一个为空,那么就将它赋给T1,不需要继续递归。
3. 代码
//Runtime: 43ms
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
if(t1&&t2){
t1->val+=t2->val;
t1->left=mergeTrees(t1->left,t2->left);
t1->right=mergeTrees(t1->right,t2->right);
}
else if(t2)
return t2;
return t1;
}
};