代码随想录-59-617.合并二叉树

news/2024/12/29 12:38:10/

目录

  • 前言
    • 题目
    • 1.同时递归两棵二叉树(前序递归)
    • 2. 本题思路分析:
    • 3. 算法实现
    • 4. 算法复杂度
    • 5. 算法坑点

前言

我正在刷卡哥的“代码随想录”,自己的总结笔记均会放在“算法刷题-代码随想录”该专栏下。
代码随想录此题链接

题目

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

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

返回合并后的二叉树。

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

在这里插入图片描述
在这里插入图片描述

1.同时递归两棵二叉树(前序递归)

遍历两棵二叉树,如果第一棵二叉树的当前节点为空则返回第二棵二叉树的节点,反之则返回第一课的二叉树结点;
若两棵二叉树当前节点的都不为空则创建一个新的节点,节点的值为当前两棵二叉树当前的节点值之和。
新节点的左孩子分别递归两棵树当前节点的左孩子,
新节点的右孩子分别递归两棵树当前节点的右孩子,

2. 本题思路分析:

此题可以使用递归遍历,
三部曲:

  • 第一步确定参数和返回值
    参数:两棵二叉树的节点
    返回值:当前节点
  • 第二步截止递归的条件
    当前第一棵树当前节点为空,返回第二棵树的当前节点,若第二棵树当前节点为空(此时第一棵树的节点不为空了)则返回第一棵树的当前节点。
  • 第三步单层递归逻辑
    将两棵树的当前节点之和相加,赋值给新建的树节点;
    然后分别递归左右孩子节点分别给此新节点的左右孩子。

3. 算法实现

public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {//前序遍历if(root1 == null){return root2;}else if(root2 == null){return root1;}TreeNode cur = new TreeNode(root1.val + root2.val);cur.left = mergeTrees(root1.left,root2.left);cur.right = mergeTrees(root1.right,root2.right);return cur;
}

4. 算法复杂度

暂无

5. 算法坑点

暂无


http://www.ppmy.cn/news/37422.html

相关文章

SIGCHLD信号(重点)

SIGCHLD的产生条件 子进程状态发生变化就会产生SIGCHLD信号 1、子进程终止时 2、子进程接收到SIGSTOP信号停止时 3、子进程处在停止态,接受到SIGCONT后唤醒时 借助 SIGCHLD 信号回收子进程 (重要) 借助信号回收子进程https://www.bilibili.com/video/BV1KE411q7ee…

WEB架构LNMP

部署Nginx: 1.配置官网仓库 [rootweb01 conf.d]# cat /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://nginx.org/keys/n…

树莓派安装WiringPi以及找不到wiringPi.h文件解决方法(图文教程)

目录 安装WiringPi 失败的过程: 选择的方法: 安装步骤: 找不到wiringPi.h文件解决方法 失败过程: 解决方法: 安装WiringPi 失败的过程: 通过分别使用sudo apt-get install wiringPi 和 wget https…

perfetto 分析camera启动性能

将启动过程拆解成 APP 、Framework、HAL 三层,分别统计三层的启动耗时 文章目录1. 启动模拟器2. 抓取trace3.将camera启动拆解为6个部分分析3.1 APP层OpenCamera耗时3.1.1 找到并标记 luncher 进程的第二个 deliverInputEvent3.1.2 找到并标记 CameraServer的connec…

公网远程连接MongoDB数据库【内网穿透】

文章目录1. 安装数据库2. 内网穿透2.1 创建隧道映射2.2 测试随机公网地址远程连接3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问MongoDB是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供…

【论文写作】如何表示增长和降低

在英语中,表示增长和降低的含义可以用许多不同的词汇和表达方式来表达。以下是一些常用的表达方式: 增长的表达方式: Increase: 表示数量或程度的增加,例如:The number of students increased by 10% this year.&…

为什么都在用springboot,springboot开发步骤

Spring Boot快速开发是一个基于Spring框架的全栈框架,它可以帮助我们快速搭建企业级应用程序。 Spring Boot快速开发的优势: 1.自动配置:Spring Boot采用自动配置的方式,大量减少了开发者对项目的配置工作,同时也降低…

常见问题解决笔记---自用

目录el-table可勾选,且分页反显vue 项目, 父组件中每次点击按钮重新加载子组件,(重新生成dom 元素)vscode vue 格式化 双引号格式化为单引号 去掉末尾逗号 去掉分号React中使用CSSgit上传项目到gitee的基本步骤判断对象…