题目描述
已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:都存在的结点,就将结点值加起来,否则空的位置就由另一个树的结点来代替。例如:
两颗二叉树是:
Tree 1
1
/ \
3 2
/
5
Tree 2
2
/
1 3
\
4 7
合并后的树为
3
/
4 5
/ \
5 4 7
题解:
题目的本质就是两颗树对应的部位相加
所以
t1的左子树=t1的左子树+t2的右子树
t1的右子树=t1的右子树+t2的右子树
代码:
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */
class Solution {
public:
/** * * @param t1 TreeNode类 * @param t2 TreeNode类 * @return TreeNode类 */
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
// write code here
if (!t1 && !t2) {
return NULL;
}
if (!t1) {
return t2;
}
if (!t2){
return t1;
}
t1->val+=t2->val;
t1->left=mergeTrees(t1->left, t2->left);
t1->right=mergeTrees(t1->right, t2->right);
return t1;
}
};