牛客题霸 [合并二叉树] C++题解/答案

牛客题霸 [合并二叉树] 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;
    }
};
posted @ 2020-11-06 14:21  回归梦想  阅读(132)  评论(0编辑  收藏  举报