【力扣每日一题】2023.8.14 合并二叉树

目录

题目:

示例:

分析:

代码:


题目:

【力扣每日一题】2023.8.14 合并二叉树_第1张图片

示例:

【力扣每日一题】2023.8.14 合并二叉树_第2张图片

分析:

给我们合并两棵二叉树,合并的方式就是把对应位置的节点的值相加,最后把合并后的二叉树的根节点返回出去。

这类二叉树需要遍历的题目,我们一般都是要递归的,无论是前中后序哪一种遍历方式,都是要递归的。

本题我们直接在调用函数里递归就可以了。

我们直接做个判断,如果某个节点为空指针节点,那么就返回另一个节点。

接着没有任何节点为空指针节点,那么我们就把两个节点的值加起来,赋给节点1。

接着进入递归,节点1的左子树等于两个节点的左子树进入新的递归所返回的节点。

右子树也等于两个节点的右子树进入新的递归所返回的节点。

因为我们是把值相加到节点1的,所以我们最后返回节点1即可。

代码:

class Solution {
public:
    TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
        if(root1==nullptr) return root2;    //如果节点1为空返回节点2
        if(root2==nullptr) return root1;    //如果节点2为空返回节点1
        root1->val+=root2->val;             //直接修改节点1的值
        root1->left=mergeTrees(root1->left,root2->left);    //递归修改节点1的左子树
        root1->right=mergeTrees(root1->right,root2->right); //递归修改节点1的右子树
        return root1;   //直接返回节点1
    }
};

你可能感兴趣的:(力扣每日一题,leetcode,算法,c++,数据结构)