• 每日力扣算法题(简单篇)


    617.合并二叉树

    题目描述:

    给你两棵二叉树: root1 和 root2 。

    想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。

    返回合并后的二叉树。

    注意: 合并过程必须从两个树的根节点开始。

    解题思路:

            对于树类问题,我们很自然的可以使用递归来解决,而对于递归我们需要先明确几个点

            1、子问题:对于根节点我们有四

    种情况要处理,第一个根节点为空,我们返回节点二,第二个根节点为空,我们返回根节点一,如果两者都不为空我们将第二个根节点的值加到第一个根节点中,然后继续分别遍历他们的左右节点。最后如果都为空直接返回节点一就行

            而每个子节点也可以看作是下面节点的根节点,重复上面的步骤,于是我们有如下代码

    都看到这里了,点个赞吧,看懂了的话点个关注一起学习

    源代码:

    1. struct TreeNode* mergeTrees(struct TreeNode* root1, struct TreeNode* root2) {
    2. if(!root1)
    3. {
    4. return root2;
    5. }
    6. if(!root2)
    7. {
    8. return root1;
    9. }
    10. if(root1&&root2)
    11. {
    12. root1->val+=root2->val;
    13. root1->left=mergeTrees(root1->left,root2->left);
    14. root1->right=mergeTrees(root1->right,root2->right);
    15. }
    16. return root1;
    17. }

            

  • 相关阅读:
    SpringMvc拦截器
    [CISCN 2023 初赛]go_session
    C/C++进程超详细详解【中部分】(系统性学习day07)
    有什么md5修改工具?快把这些工具收好
    netty系列之:netty中常用的xml编码解码器
    Vue混入与插件
    Docker的安装之加速器的配置(阿里源)
    Python21天学习挑战赛Day(3-4)·json标准库(应用)
    Spring总结
    剪映电脑版画中画在哪?
  • 原文地址:https://blog.csdn.net/2301_79629995/article/details/136647403