图(dfs与bfs)算法1

开辟新专题!不擅长的图它来了来了!(莫名激动

进度:10/100

另:没想到给自己挖了个坑,可以用dfs的基本上也可以用bfs,看来要双线并行了。

补:图算法是我近期得有30%的焦虑来源了,但是不管三七二十一,奥力给,干他兄弟们!

c462fcbb2bd541b4840d96763feb3048.png

两周的提交记录。努力努力再努力!

 

原题1:

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

原题2:

给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。

原题3:

给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 

原题4:

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

原题5:

给你一个二叉树的根节点 root , 检查它是否轴对称。

原题6:

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。

叶子节点 是指没有子节点的节点。

原题7:

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。

叶子节点 是指没有子节点的节点。

原题8:

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明:叶子节点是指没有子节点的节点。

原题9:

给定一个二叉树,判断它是否是 平衡二叉树

  (平衡二叉树 是指该树所有节点的左右子树的高度相差不超过 1。)

 

 

1.二叉树的前序遍历--简单

中左右。

(1.递归。

(2。迭代。当栈不为空或节点不为空时,我们将root->val加入vector,一直入栈root的左节点直至root为空,说明左节点已经遍历完,root指向栈顶的右节点,继续循环。

(3.Morris迭代。还不会

 

2.二叉树的中序遍历--简单

左中右。

栈的用法:

stk.top(),stk.pop(),stk.push()

思路:

(1.递归。先遍历左节点,再将根节点入vector,再遍历右节点。

(2.迭代。so,迭代与递归到底有什么区别,我一直认为他俩一样。

区别:迭代是通过调用一个迭代器解决问题,譬如用一个for循环来计算1~100的和。递归是通过反复调用自身来解决问题。

我们使用一个栈,在它不为空或者节点不为空时,一直循环将当前指针指向左直至当前为空,然后将栈首出队(此时当前节点已经没有左节点,所以按中序遍历原理,该根节点可以入vector了),入vector,当前节点再指向右(该节点左中都入vector了,该将右节点入vector了),然后循环。

(3.Morris迭代。

 

3.二叉树的后序遍历--简单

左右中。

(1.递归。

(2.迭代。咱们就是说,一整个茅塞顿开,恍然大悟啊。后序遍历是左右中,利用栈先入后出的特性,我们按中右左给节点压进去,最后反转一下vector就行了,

(3.Morris迭代。还不会

 

4.二叉树的层序遍历--简单

(1.递归。忘记depth这个可利用的数据了。

(2.迭代。一层一层入总vector,即:每次队列只会含有这一层的节点。注意,root!=nullptr是什么鬼循环判断条件啊。

 

 

5.对称二叉树--简单

队列用法:

q.front(),q.pop(),q.push()

思路:

(1.递归。不简述了,同上思路。要是世界的原理像递归一样简单就好了。

(2.迭代。简直了,递归就像dfs的代名词,迭代就是bfs的代名词(阿鸡瞎说,别打我)

用队列来存,先入队两个头节点,然后每次取出队列头部两个节点进行比较,false的就考虑false的情况,暂时没出错的就将root1->left,root2->right,root1->right,root2->left入队。

 

 

6.路径总和--简单

思路:

(1.递归。

(2.迭代。我发现dfs和bfs相对于别的算法没有那么多细节,基本上逻辑对了代码就对。

用两个队列分别存当前访问的节点和当前节点的路径总和。如果是叶子节点,检查总和是否等于目标总和。将该节点存在的子节点与其路径和入队,循环进行至队列为空(所有节点都遍历完)为止。

 

 

7.路经总和 II--中等

(1.递归。有意思的是回溯的话,vector也会跟着回溯,不需要删除上一轮加进去的元素。

 

8.二叉树的最小深度--简单

单纯就想把这个题作为风向标放这,证明我两种解法的码都是自己敲出来的,吾已小成!喔哈哈哈哈

 

9.平衡二叉树:
思路:

(1.自上而下递归。

(2.自下而上递归。有意思的是left和right都先等于其左右节点的子树的值,然后看是否高度相差大于1或者子树中有高度为-1,有则返回-1;没有则返回高子树+1。

 

彩蛋:

官方题解的优雅代码:

return max(maxDepth(root->left), maxDepth(root->right)) + 1;

 

 

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

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

相关文章

一、测试工具LoadRunner Professional脚本编写-录制前设置

设置基于URL的脚本 原因:基于HTML的脚本会导致login接口不能正确录制 设置UTF-8 原因:不勾选此项会导致脚本中文变为乱码

Thonny IDE + MicroPython + ESP32 + GY-302 测量环境中的光照强度

GY-302是一款基于BH1750FVI光照强度传感器芯片的模块。该模块能够直接测量出环境中的光照强度,并将光照强度转换为数字信号输出。其具体参数如下表所示。 参数名称 参数特性 测量范围 0-65535 LX 测量精度 在环境光下误差小于20%,能够自动忽略50/60…

AJAX和XHR、fetch、axios的关系

AJAX中有两套原生的API,一个是XHR(XMLHttpRequest),一个是Fetch API axios是第三方库,在浏览器环境中使用的是XHR umi-request也是第三方库,在浏览器环境中使用的是Fetch 在 AJAX(Asynchronous JavaScript and XML&am…

openlayers地图缓存添加

//通过安装包localforage(npm install localforage)或https://cdnjs.cloudflare.com/ajax/libs/localforage/1.10.0/localforage.min.js tileCacheStore.js import localforage from localforage var tileCacheStorenull;// 从缓存中获取该瓦片 functio…

云轴科技ZStack出席中国电信国际EMCP平台香港发布会,持续推动海外合作

近日,以“云聚未来 翼起新篇”为主题的中国电信国际多云服务一站式平台(E-surfing Managed Cloud Platform,简称EMCP平台)新闻发布会在香港成功举办,标志着中国电信国际在云计算服务领域取得了又一重大进展。云轴科技…

2024.11.29——[HCTF 2018]WarmUp 1

拿到题&#xff0c;发现是一张图&#xff0c;查看源代码发现了被注释掉的提示 <!-- source.php--> step 1 在url传参看看这个文件&#xff0c;发现了这道题的源码 step 2 开始审计代码&#xff0c;分析关键函数 //mb_strpos($haystack,$needle,$offset,$encoding):int|…

brpc的二次封装以及brpc与etcd的联合

目的&#xff1a; 搭配etcd的注册中心管理能知道谁能提供什么服务&#xff0c;并用rpc进行服务调用 封装思想&#xff1a; 信道管理&#xff0c;将不同服务主机的通信信道管理起来 封装&#xff1a; 1.指定的信道管理类 一个服务通常会有多个节点&#xff0c;每个节点都会…

【提升效率】如何写好一份详细设计文档

版本日期修订人描述V1.02024/12/6nick huang创建文档 背景 CSDN在发起“如何做好一份技术文档”的活动。 想起我最近在写一份详细设计&#xff0c;有一些感受&#xff1a; 一份考虑较周全的“详细设计文档模板”能起到质量保底的作用。 当一名初级技术人员需要编写详细设计文…

电阻计RM3544、RM3545的使用

目录&#xff1a; 一、电阻计与PC通讯 1、硬件连接 2、RmLogger.exe的使用 二、RM3545测量35uΩ电阻 一、电阻计与PC通讯 1、硬件连接 可以设置USB或COM口(串口)连接PC&#xff0c;也可以设置为“打印”输出。 1&#xff09;使用USB连接PC 2&#xff09;使用串口连接PC …

Jenkins 的HTTP Request 插件为什么不能配置Basic认证了

本篇遇到的问题 还是因为Jenkins需要及其所在的OS需要升级&#xff0c;升级策略是在一台新服务器上安装和配置最新版本的Jenkins&#xff0c; 当前的最新版本是&#xff1a; 2.479.2 LTS。 如果需要这个版本的话可以在官方站点下载&#xff0c;也可以到如下地址下载&#xff1…

uniapp 封装自定义头部导航栏

封装原因 项目中有时候需要使用自定义的头部导航栏&#xff0c;原生的无法满足需求 参数 属性名描述示例title标题字符串&#xff1a;首页bgColor背景色字符串&#xff1a;#ffftype左侧的操作内容字符串&#xff1a;all&#xff0c;详细值请在下方查看 参数解释 type all…

docker学习笔记(五)--docker-compose

文章目录 常用命令docker-compose是什么yml配置指令详解versionservicesimagebuildcommandportsvolumesdepends_on docker-compose.yml文件编写 常用命令 命令说明docker-compose up启动所有docker-compose服务&#xff0c;通常加上-d选项&#xff0c;让其运行在后台docker-co…

Linux中inode

磁盘的空间管理 如何对磁盘空间进行管理&#xff1f; 假设在一块大小为500G的磁盘中&#xff0c;500*1024*1024524288000KB。在磁盘中&#xff0c;扇区是磁盘的基本单位&#xff08;一般大小为512byte&#xff09;&#xff0c;而文件系统访问磁盘的基本单位是4KB&#xff0c;因…

5G扬帆乘劲风,遨游通讯赋能千行百业谱新篇

在大型工厂&#xff0c;轻触手机屏幕&#xff0c;实时库存数据、人员定位等信息便跃然眼前、一目了然&#xff1b;在边远油田&#xff0c;动动手指&#xff0c;即可实时查询设备温度、危险气体浓度等信息&#xff0c;大数据瞬间尽在“掌”握……在遨游5G防爆智能手机的助力下&a…

RT Thread Studio新建STM32F407IG工程文件编译提示错误

编译提示错误 原因: RT 源码使用4.0.3的话&#xff0c;请用STM32F4支持包的0.2.2版本&#xff0c;就不会出错了。 如果支持包用0.2.3版本的话&#xff0c;需要用RT内核4.1.0版本。0.2.3 版本更新了一些针对内核4.1.0的驱动代码&#xff0c;这几个定义都是4.1.0里的。

学生管理系统(java)

1.前期准备 &#xff08;1&#xff09;新建java项目 &#xff08;2&#xff09;新建java软件包以及三个文件Student.java,Student.txt,StuSystem.java Student.java package student_management_system;public class Student {private String id;private String name;private…

JavaWeb学习(2)(Cookie原理(超详细)、HTTP无状态)

目录 一、HTTP无状态。 &#xff08;1&#xff09;"记住我"&#xff1f; &#xff08;2&#xff09;HTTP无状态。 &#xff08;3&#xff09;信息存储客户端中。如何处理&#xff1f; 1、loaclStorage与sessionStorage。 2、Cookie。 二、Cookie。 &#xff08;1&…

SpringBoot教程(三十二) SpringBoot集成Skywalking链路跟踪

SpringBoot教程&#xff08;三十二&#xff09; | SpringBoot集成Skywalking链路跟踪 一、Skywalking是什么&#xff1f;二、Skywalking与JDK版本的对应关系三、Skywalking下载四、Skywalking 数据存储五、Skywalking 的启动六、部署探针 前提&#xff1a; Agents 8.9.0 放入 …

flask创建templates目录存放html文件

首先&#xff0c;创建flask项目&#xff0c;在pycharm中File --> New Project&#xff0c;选择Flask项目。 然后&#xff0c;在某一目录下&#xff0c;新建名为templates的文件夹&#xff0c;这时会是一个普通的文件夹。 然后右击templates文件夹&#xff0c;选择Unmark as …

Java进阶(注解,设计模式,对象克隆)

Java进阶(注解&#xff0c;设计模式&#xff0c;对象克隆) 一. 注解 1.1 什么是注解 java中注解(Annotation)&#xff0c;又称java标注&#xff0c;是一种特殊的注释 可以添加在包&#xff0c;类&#xff0c;成员变量&#xff0c;方法&#xff0c;参数等内容上 注解会随同…