20天刷题计划-617. 合并二叉树

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

一、题目描述:

给你两棵二叉树: 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

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/me…

二、思路分析:

根据题目可以发现, 当树中的某个节点为空时, 这个节点下是不可能存在子节点的.所以同时遍历两个棵树(前序遍历), 每次遍历都需要对节点进行以下判断:

  • 当前两个树的节点都为空, 节点下不可能存在子节点,直接返回null.
  • 当前两个树存在一个节点为空, 若有则当前节点及其下的子节点合并之后的树是不为空.
  • 当两个树的节点都不为空的情况, 需要分别遍历其的左子节点和右子节点.

三、AC 代码:

class Solution {
    public static TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
        if(root1==null&&root2==null) return null;
        if(root1==null&&root2!=null) return root2;
        if(root1!=null&&root2==null) return root1;
        root1.left=mergeTrees(root1.left,root2.left);
        root1.right=mergeTrees(root1.right,root2.right);
        root1.val+=root2.val;
        return root1;
    }
}

四、总结:

对于这种重复的操作,显然离不开循环或递归。在此题便是采用递归的方式解决。

写题解不易,若对你有帮助,点赞评论再走吧。ヽ(✿゚▽゚)ノ,如有不足,请大家斧正。



相关文章
|
Python
Python列表推导式和嵌套的列表推导式
Python列表推导式和嵌套的列表推导式
251 0
|
Java Android开发
今年安卓开发中碰到的几个稀奇古怪的问题
如果你也遇到了,请保持淡定~ 1.SIGBUS和SIGSEGV 首先是这两个名词的说明: SIGBUS(Bus error)意味着指针所对应的地址是有效地址,但总线不能正常使用该指针。
1487 0
|
SQL 数据库
SQL Server 网络接口: 定位指定的 Server/Instance 时出错 [xFFFFFFFF].
用sqlcmd连接数据库时,出现下面的错误: HResult 0xFFFFFFFF,级别 16,状态 1 SQL Server 网络接口: 定位指定的 Server/Instance 时出错 [xFFFFFFFF]. Sqlcmd: 错误: Microsoft SQL Server Native Client 10.0 : 与 SQL Server 建立连接时 发生了与网络相关的或特定于实例的错误。
4915 0
|
18天前
|
人工智能 JavaScript 前端开发
实战使用 Qwen3-coder 低代码开发 HTML 个人网站
阿里巴巴开源的Qwen3-coder模型,凭借强大性能和低代码能力,助力用户快速搭建个人网站。本文详解环境配置、提示词设计与部署流程,适合编程新手快速上手,掌握AI辅助开发技能。
1216 8