牛客题霸 [合并二叉树] 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;
    }
};