​LeetCode解法汇总617. 合并二叉树

news/2024/7/7 20:19:21

 目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台


描述:

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

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

返回合并后的二叉树。

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

示例 1:

输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]
输出:[3,4,5,5,4,null,7]

示例 2:

输入:root1 = [1], root2 = [1,2]
输出:[2,2]

提示:

  • 两棵树中的节点数目在范围 [0, 2000] 内
  • -104 <= Node.val <= 104

 

解题思路:

* 解题思路:

* root1和root2合并,我们分为三种情况:

* root1为空时,则直接使用root2及其子节点即可。

* root2为空时,则直接使用root1即可。

* 都不为空时,则使用root1和root2的和,并且递归计算其子节点。

代码:

class Solution617
{
public:
    TreeNode *mergeTrees(TreeNode *root1, TreeNode *root2)
    {
        if (root1 == nullptr)
        {
            // root1为空,直接用root2的
            root1 = root2;
        }
        else if (root2 == nullptr)
        {
            // root2为空,直接用root1的
        }
        else
        {
            // 都不为空,则合并
            root1->val += root2->val;
            if (root1->left != nullptr || root2->left != nullptr)
            {
                root1->left = mergeTrees(root1->left, root2->left);
            }

            if (root1->right != nullptr || root2->right != nullptr)
            {
                root1->right = mergeTrees(root1->right, root2->right);
            }
        }

        return root1;
    }
};


http://lihuaxi.xjx100.cn/news/1448166.html

相关文章

Java创建多线程的最全方法

Java创建多线程的最全方法 一、继承Thread&#xff0c;重写run方法二、实现Runnable接口&#xff0c;重写run方法三、使用匿名内部类创建 Thread 子类对象四、使用匿名内部类&#xff0c;实现Runnable接口五、实现Callable接口六、使用线程池创建线程 一、继承Thread&#xff0…

Python3,lmproof库,你不知道的小技能,这一篇给安排。

lmproof技能介绍 1、引言2、代码实战2.1 定义2.2 常用语法2.3 安装2.4 示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c;鱼哥&#xff0c;我要考考你 小鱼&#xff1a;你要考考我&#xff1f; 小屌丝&#xff1a;是的啊&#xff0c; 我要考你&#xff0c; 小鱼&#…

东方晶源亮相第十一届半导体设备年会,共话发展“芯”机遇

8月11日&#xff0c;以“协力同芯抢机遇&#xff0c;集成创新造设备”为主题的第十一届&#xff08;2023年&#xff09;中国电子专用设备工业协会半导体设备年会暨产业链合作论坛&#xff08;CSEAC&#xff09;在无锡太湖国际博览中心圆满闭幕。为期3天的CSEAC&#xff0c;通过…

SpringBoot中properties、yml、yaml的优先级

原理 配置优先级低的会先加载然后会被配置优先级高的覆盖 验证 创建SpringBoot项目&#xff08;网址&#xff09; 在resource目录下创建application.properties、application.yml、application.yaml文件 运行 结论 优先级顺序&#xff1a; properties>yml>yaml

echarts tooltip提示框加单位

效果&#xff1a; 1.比较简单的方法 series: [{name: "重大风险",type: "bar",data: data2,color: ExtremeRiskColor,tooltip: {valueFormatter: function (value) {return value 个;}},},{name: "较大风险",type: "bar",data: dat…

Python运算符全解析:技巧与案例探究

在Python编程中&#xff0c;运算符是强大的工具&#xff0c;能够使我们在数据处理和逻辑判断方面更加灵活。本篇博客将全面探讨Python中常用的运算符&#xff0c;包括算术、比较、逻辑、赋值、位、成员和身份运算符&#xff0c;通过实际案例为你展示如何妙用运算符解决问题。 …

Jetpack 中的 ViewModel - 使用篇

什么是 ViewModel ViewModel 是 Jetpack 中的一个组件&#xff0c;它旨在存储和管理与UI相关的数据&#xff0c;ViewModel 的设计思想是将 UI 层与业务逻辑分离&#xff0c;使得数据在配置更改&#xff08;例如屏幕旋转&#xff09; 时仍然保持可用。ViewModel 独立于 UI 层的…

springboot多模块打包方式

明确子父模块结构 父目录是带modules 大致结构如下&#xff1a; <modules><module>ruoyi-admin</module><module>ruoyi-framework</module><module>ruoyi-system</module><module>ruoyi-quartz</module><module>…