【牛客面试必刷TOP101】Day7.BM31 对称的二叉树和BM32 合并二叉树

news2024/11/15 8:32:43

作者简介:大家好,我是未央;

博客首页:未央.303

系列专栏:牛客面试必刷TOP101

每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!!!

文章目录

前言

一、对称的二叉树

题目描述

解题分析

二、合并二叉树

题目描述

解题分析

总结



前言


一、对称的二叉树

题目描述

描述:

给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)


例如:                           

下面这棵二叉树是对称的:

下面这棵二叉树不对称:


数据范围:节点数满足 0≤n≤1000,节点上的值满足∣val∣≤1000;

要求:空间复杂度 O(n),时间复杂度O(n)

备注:

你可以用递归和迭代两种方法解决这个问题;


示例1:


示例2:


解题分析

题目的主要信息:

  • 判断一棵二叉树是否是镜像,即判断二叉树是否是轴对称图形

轴对称:

非轴对称:


本题我们采用递归的方法进行解答更加简单;

解题思路:

前序遍历的时候我们采用的是“根左右”的遍历次序,如果这棵二叉树是对称的,即相应的左右节点交换位置完全没有问题,那我们是不是可以尝试“根右左”遍历,按照轴对称图像的性质,这两种次序的遍历结果应该是一样的。


不同的方式遍历两次,将结果拿出来比较看起来是一种可行的方法,但也仅仅可行,太过于麻烦。我们不如在遍历的过程就结果比较了。而遍历方式依据前序遍历可以使用递归:

  • 本级任务: 每个子问题,需要按照上述思路,“根左右”走左边的时候“根右左”走右边,“根左右”走右边的时候“根右左”走左边,一起进入子问题,需要两边都是匹配才能对称。
  • 终止条件: 当进入子问题的两个节点都为空,说明都到了叶子节点,且是同步的,因此结束本次子问题,返回true;有当进入子问题的两个节点只一个为空,或是元素值不相等,说明这里的对称不匹配,同样结束本次子问题,返回false。
  • 返回值: 每一级将子问题是否匹配的结果往上传递。

解题步骤:

  • step 1:两种方向的前序遍历,同步过程中的当前两个节点,同为空,属于对称的范畴。
  • step 2:当前两个节点只有一个为空或者节点值不相等,已经不是对称的二叉树了。
  • step 3:第一个节点的左子树与第二个节点的右子树同步递归对比,第一个节点的右子树与第二个节点的左子树同步递归比较。

图示过程分析:


代码编写:

二、合并二叉树

题目描述

描述:

已知两颗二叉树,将它们合并成一颗二叉树。

合并规则是:都存在的结点,就将结点值加起来,否则空的位置就由另一个树的结点来代替。


例如:
两颗二叉树是:


合并后的树为:


数据范围:树上节点数量满足 0≤n≤500,树上节点的值一定在32位整型范围内。

进阶:空间复杂度O(1) ,时间复杂度O(n);


示例1:


示例2:


解题分析

题目的主要信息:

  • 合并(相加)二叉树位置相同的节点;
  • 缺少的节点用另一棵树来补,若都缺则返回NULL;

解题思路:

递归前序遍历

要将一棵二叉树的节点与另一棵二叉树相加合并,肯定需要遍历两棵二叉树,那我们可以考虑同步遍历两棵二叉树,这样就可以将每次遍历到的值相加在一起。遍历的方式有多种,这里推荐前序递归遍历。


解题步骤:

  • step 1:首先判断t1与t2是否为空,若一个为空则用另一个代替,若都为空,返回的值也是空。
  • step 2:然后依据前序遍历的特点,优先访问根节点,将两个根点的值相加创建到新树中。
  • step 3:两棵树再依次同步进入左子树和右子树。

代码编写:


总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1083954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统之ip命令的基本使用

Linux系统之ip命令的基本使用 一、ip命令介绍1.1 ip命令简介1.2 ip命令的由来1.3 ip命令的安装包 二、ip命令使用帮助2.1 ip命令的help帮助信息2.2 ip命令使用帮助 三、查看网络信息3.1 显示当前网络接口信息3.2 显示网络设备运行状态3.3 显示详细设备信息3.4 查看路由表3.5 查…

DHT11 数字湿温度传感器的原理和应用范例

目录 概述 1、应用电路连接说明 2、DHT11 数据结构 3、DHT11的传输时序 3.1 DHT11 开始发送数据流程 3.2 主机复位信号和 DHT11 响应信号 3.3 数字‘0’信号表示方法 3.4 数字‘1’信号表示方法 4、实例应用 4.1 硬件描述 4.2 管脚分配 4.3 程序代码 概述 DHT…

@所有燃气企业,城燃企业数字化转型重点抓住的八个关键点

关键词:智慧燃气、燃气数字化、设备设施数字化 数字化转型是用信息技术全面重塑企业经营管理模式,是企业发展模式的变革创新,是企业从工业经济时代迈向数字经济时代的必然选择。加快推进企业数字化转型,打造数字时代企业业务运行…

2023年中国超导磁体市场规模、需求量及行业竞争现状分析[图]

超导磁体一般是指用超导导线绕制的能产生强磁场的超导线圈,还包括其运行所必要的低温恒温容器。通常电磁铁是利用在导体中通过电流产生磁场,由于超导材料在超导状态下具有零电阻特性,因此可以以极小的面积通过巨大的电流。超导磁体具有场强高…

意大利航天飞行器公司【Sidereus】完成510万欧元融资

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,位于意大利萨莱诺的航天飞行器公司Sidereus Space Dynamics今日宣布已完成510万欧元融资。 本轮融资由Primo Space和CDP Venture Capital Sgr领投,通过Italia Venture II - Fondo Impr…

element picker 时间控件,指定区间和指定月份置灰

直接上代码 <el-date-pickerv-model"fillingList.declareDate"type"month":disabled"isDisplayName"placeholder"选择填报时间"value-format"yyyy-MM":picker-options"pickerOptions"change"declareDate…

玩转ChatGPT:图像识别(vol. 1)

一、写在前面 来了来了&#xff0c;终于给我的账号开放图像识别功能了&#xff0c;话不多说&#xff0c;直接开测&#xff01;&#xff01;&#xff01; 二、开始尝鲜 &#xff08;1&#xff09;咒语&#xff1a; GPT回复&#xff1a; 这幅图显示了从2005年1月到2012年12月的…

uniapp app获取keystore等一系列常用数据

https://blog.csdn.net/deepdfhy/article/details/88698492 参考文章 一、获取安卓证书keystore的SHA1和SHA256值 参数上面引用链接 window r : $ cmd $ D: 进入D盘 $ keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore 项目名称.ke…

uniapp app端使用谷歌地图选点定位

国内需要vpn 和申请谷歌地图的Maps JavaScript API 类型的 key,指引链接这里不详细介绍 一 、我们得通过webview 跳转谷歌地图 ,需要创建一个webview页面,里面跳转承载谷歌地图的html页面,如果是放在本地的话 html文件须遵守规范 放在 “项目根目录下->hybrid->html->…

Spring三级缓存流程再梳理

本文主要是说下在使用spring时遇到了循环依赖&#xff0c;Spring利用三级缓存怎么解决 getBean(beanName)doGetBean(name, null, null, false);getSingleton(beanName)方法&#xff0c; 最后会通过addSingleton(beanName, singletonObject)存到一级缓存里面去createBean(beanN…

如何进行pyhon的虚拟环境创建及管理

无论服务器或者本地&#xff0c;创建虚拟环境都是&#xff1a; 【Python】搭建虚拟环境_python创建虚拟环境_今天自洽了吗的博客-CSDN博客 虚拟环境绑定到项目 这个是运行环境&#xff0c;可以切换任意运行环境 如果是服务器上&#xff1a;可以先source xx/bin/active&#xf…

颠覆性语音识别:单词级时间戳和说话人分离 | 开源日报 No.53

vbenjs/vue-vben-admin Stars: 19.7k License: MIT Vue Vben Admin 是一个免费开源的中后台模板&#xff0c;使用最新的 vue3、vite4 和 TypeScript 等主流技术进行开发。该项目提供了现成的中后台前端解决方案&#xff0c;并可用于学习参考。 使用先进的前端技术如 Vue3/vit…

[电源选项]没有系统散热方式,没有被动散热选项

背景 笔记本的风扇声音太大&#xff0c;想改成被动散热方式&#xff0c;又不想影响性能。 于是我打开了控制面板\所有控制面板项\电源选项&#xff0c;点更改计划设置-> 更改高级电源设置。 想把散热方式改成被动散热。发现win11中好像没有这个选项了&#xff01; 如何…

JVM(一)

字节码文件的组成: 基础信息:魔数&#xff0c;字节码文件对应的java版本号&#xff0c;访问表示public final以及父类和接口 常量池:保存了字符串常量&#xff0c;类或者是接口名&#xff0c;字段名&#xff0c;主要在接口中使用 字段:当前类或者是接口声明的字段信息 方法:当…

win10 wsl安装步骤

参考&#xff1a; 安装 WSL | Microsoft Learn 一、安装wsl 1.若要查看可通过在线商店下载的可用 Linux 发行版列表&#xff0c;请输入&#xff1a; wsl --list --online 或 wsl -l -o> wsl -l -o 以下是可安装的有效分发的列表。 使用 wsl.exe --install <Distro>…

知识体系图谱

知识体系图谱 最近更新简历的时候&#xff0c;有种好像去年到今年学了很多&#xff0c;但是都零零散散的&#xff0c;不成体系&#xff0c;就想着抽时间总结归纳一下知识体系&#xff0c;目前我个人的技术栈是这样的&#xff1a; 还是稍微有点乱&#xff0c;下一次更新的时候再…

HQChart支持的画图工具列表

HQChart支持的画图工具列表 线段类线段射线标价线垂直线箭头趋势线水平线水平线段平行射线平行线平行通道价格通道线M头W底头肩型波浪尺AB波浪尺箱型线涂鸦线段 图形类圆弧线矩形平行四边形三角形圆对称角度 文字类文本箭头NoteAnchoredTextPriceLabelPriceNote 其他江恩角度线…

Ubuntu下怎么配置vsftpd

2023年10月12日&#xff0c;周四中午 目录 首先要添加一个系统用户然后设置这个系统用户的密码给新创建的系统用户创建主目录启动vsftpd服务查看vsftpd服务的状态打开外界访问vsftpd服务所需的端口获取服务器的IP地址大功告成 首先要添加一个系统用户 useradd 用户名然后设置…

如何应对量化交易,个人股票账户如何实现量化程序化自动交易

目前股票量化交易是对个人账户开放的&#xff0c;如果你没开通&#xff0c;可能是没有找对渠道&#xff0c;很多券商的手机客户端是包含某些简易版的策略交易&#xff0c;如网格策略&#xff0c;自动止盈止损等&#xff0c;这些策略交易虽然简单、灵活性差&#xff0c;但也是量…

【数据安全】数据安全运维是什么意思?有什么意义?

随着数字化大力发展&#xff0c;保障企业重要资产数据的安全越发重要&#xff0c;因此衍生了数据安全运维工作。那你知道数据安全运维是什么意思&#xff1f;有什么意义&#xff1f; 数据安全运维是什么意思&#xff1f; 数据安全运维是将数据分析技术用于管理数据的过程&…