牛客题霸 [合并二叉树] C++题解/答案
题目描述
已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:都存在的结点,就将结点值加起来,否则空的位置就由另一个树的结点来代替。例如:
两颗二叉树是:
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;
}
};