图(dfs与bfs)算法2

进度:15/100

 

原题1:

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

(力扣的图)

7f25abf3d049488bbc52834443f61b63.png

原题2:

给定二叉树的根节点 root ,返回所有左叶子之和。

原题3:

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。

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

原题4:

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:

  • 节点的左子树
    只包含 小于 当前节点的数。
  • 节点的右子树只包含 大于 当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。

 

 

1.翻转二叉树--简单

这次一反常态没写出递归写出了迭代。

(1.迭代。每层每层反转,x.right<-->x.left,若左右节点是存在的,就加入队列。

(2.递归。有点抽象,自下而上翻转二叉树,因为叶节点反转好就可以反转子节点,而迭代是自上而下翻转二叉树。

 

 

2.左叶子之和--简单

思路:

(1.递归。由于要计算的是“左”叶子之和,所以递归return的标志不应该是发现该节点为叶子节点然后贡献给结果,而是发现当前节点的左子节点为叶子节点然后贡献给结果。

(2.迭代。对于每个节点,若该节点的左节点是叶子节点,贡献值;若不是叶子,加入栈中。对于右节点,若不是叶子节点,加入栈中。

 

 

3.二叉树的所有路径--简单

思路:

(1.递归。感谢 to_string 救我于水火之中。

(2.迭代。感觉迭代的逻辑总是很强。用一个treenode队列和一个string队列来存当前到达节点和路径,若该节点已经是叶子,就将路径push进vector中,若不是,则分别判断是否存在左子节点和右子节点,然后push进两个队列中。

学到写法:q.push(path + "->" + to_string( root->left->val ));

 

 

4.验证二叉搜索树--中等

(1.递归。感觉官方题解的代码好优美啊。从上往下递归的时候,函数带有root,lower,upper,如果root的val不满足大于lower或者小于upper,就return false,否则,继续向下遍历,遍历左节点就将upper更新为root.val(因为对于左节点来说,root.val是比它大的最小数),右节点就更新lower为root.val(对于右节点来说,root.val是比它小的最大数)。

(2.迭代。我们用中序遍历,那么该树如果是二叉搜索树,就一定是升序的。每次记录最小值,然后将下一个值与最小值比较,如果小于最小值,就说明不是二叉搜索树。我还是有点迷惑,可能本质上是因为我并没有完全搞懂遍历算法。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【NLP 16、实践 ③ 找出特定字符在字符串中的位置】

看着父亲苍老的白发和渐渐老态的面容 希望时间再慢一些 —— 24.12.19 一、定义模型 1.初始化模型 ① 初始化父类 super(TorchModel, self).__init__()&#xff1a; 调用父类 nn.Module 的初始化方法&#xff0c;确保模型能够正确初始化。 ② 创建嵌入层 self.embedding n…

lightRAG 论文阅读笔记

论文原文 https://arxiv.org/pdf/2410.05779v1 这里我先说一下自己的感受&#xff0c;这篇论文整体看下来&#xff0c;没有太多惊艳的地方。核心就是利用知识图谱&#xff0c;通过模型对文档抽取实体和关系。 然后基于此来构建查询。核心问题还是在解决知识之间的连接问题。 论…

基于JAVA+SpringBoot+Vue的反欺诈平台

基于JAVASpringBootVue的反欺诈平台 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; 哈喽兄弟…

Gartner发布2025年网络安全主要趋势:实现转型和嵌入弹性两大主题下的9个趋势

持续不断的技术和业务中断考验着安全计划和团队绩效的极限。安全和风险管理领导者必须实现业务价值&#xff0c;并加倍努力增强组织、个人和团队的韧性&#xff0c;以证明安全计划在 2025 年的有效性。 机会 面对不断变化的技术以及企业希望利用这些技术获得战略利益的愿望&…

基于Spring Boot的新能源汽车个性化推荐系统

一、系统背景与意义 随着新能源汽车市场的快速发展&#xff0c;消费者对新能源汽车的需求日益多样化。为了满足消费者的个性化需求&#xff0c;提高购车体验&#xff0c;开发一个基于Spring Boot的新能源汽车个性化推荐系统显得尤为重要。该系统能够根据用户的偏好、历史行为等…

YOLOV8 原理和实现全解析(合适新人)

YOLOV8 原理和实现全解析 0 简介1 YOLOv8 概述2 模型结构设计3 Loss 计算4 训练数据增强5 训练策略6 模型推理过程7 特征图可视化总结 0 简介 图 1&#xff1a;YOLOv8-P5 模型结构 以上结构图由 RangeKinggithub 绘制。 YOLOv8 是 Ultralytics 公司在 2023 年 1月 10 号开源的…

【WRF教程第四期】WRF 初始化概述:以4.5版本为例

WRF 初始化&#xff08;WRF Initialization&#xff09; Building Initialization Programs编译方式 理想案例初始化&#xff08;Initialization for Idealized Cases&#xff09;理想化案例的输入可用的理想化案例 现实案例初始化&#xff08;Initialization for Real Data Ca…

vmcore-dmesg交叉编译(arm64平台)

kexec工具&#xff1a;能够将第二内核&#xff08;捕获内核&#xff09;装载到指定内存运行。 vmcore-dmesg工具&#xff1a;用于提取vmcore的dmesg信息。 1、源码下载地址&#xff1a; Index of /pub/linux/utils/kernel/kexec/ 2、交叉编译&#xff1a; 采用aarch64-lin…

计算机网络-L2TP VPN基础概念与原理

一、概述 前面学习了GRE和IPSec VPN&#xff0c;今天继续学习另外一个也很常见的VPN类型-L2TP VPN。 L2TP&#xff08;Layer 2 Tunneling Protocol&#xff09; 协议结合了L2F协议和PPTP协议的优点&#xff0c;是IETF有关二层隧道协议的工业标准。L2TP是虚拟私有拨号网VPDN&…

OpenCV学习——图像融合

import cv2 as cv import cv2 as cvbg cv.imread("test_images/background.jpg", cv.IMREAD_COLOR) fg cv.imread("test_images/forground.png", cv.IMREAD_COLOR)# 打印图片尺寸 print(bg.shape) print(fg.shape)resize_size (1200, 800)bg cv.resize…

ChatGPT重大更新:新增实时搜索和高级语音

12月17日消息&#xff0c;据报道&#xff0c;OpenAI开启了第八天技术分享直播&#xff0c;对ChatGPT搜索功能进行了大量更新。 此次ChatGPT新增的功能亮点纷呈。其中&#xff0c;实时搜索功能尤为引人注目。OpenAI对搜索算法进行了深度优化&#xff0c;使得用户提出问题后&…

30. Three.js案例-绘制并渲染圆弧

30. Three.js案例-绘制并渲染圆弧 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它利用 WebGL 技术在浏览器中渲染 3D 图形。 构造器 new THREE.WebGLRenderer(parameters) 参数类型描述parametersObject可选参数对象&#xff…

YOLO8 改进 009:引入 ASFF 对 YOLOv8 检测头进行优化(适用于小目标检测任务)

论文题目&#xff1a;Learning Spatial Fusion for Single-Shot Object Detection 论文地址&#xff1a;Paper - ASFF 官方源码&#xff1a;GitHub - GOATmessi8/ASFF 简 介 多尺度特征融合是解决多尺度目标检测问题的关键技术&#xff0c;其中 FPN&#xff08;特征金字塔网络…

【数据集】生菜病害检测数据集530张6类YOLO+VOC格式

数据集格式&#xff1a;VOC格式YOLO格式 压缩包内含&#xff1a;3个文件夹&#xff0c;分别存储图片、xml、txt文件 JPEGImages文件夹中jpg图片总计&#xff1a;530 Annotations文件夹中xml文件总计&#xff1a;530 labels文件夹中txt文件总计&#xff1a;530 标签种类数&#…

设计模式2

23中设计模式分类 创建型模式&#xff1a;对象实例化的模式&#xff0c;创建型模式用于解耦对象的实例化过程。&#xff08;对象的创建和对象的使用分离&#xff09; 5种&#xff1a;单例模式、工厂模式、抽象工厂模式、原型模式、建造者模式 结构型模式&#xff1a;把类或对…

CSS边框的样式

边框阴影 让元素更有立体感 img {box-shadow: 2px 10px 5px 20px #ff0000;border-radius: 44px;}语法&#xff1a;box-shadow&#xff1a;值1 值2 值3 值4 值5 值1&#xff1a;水平阴影的位置值2&#xff1a;垂直阴影的位置值3&#xff1a;模糊距离值4&#xff1a;阴影的尺寸…

Spring篇--xml方式整合第三方框架

Spring xml方式整合第三方框架 xml整合第三方框架有两种整合方案&#xff1a; ​ 不需要自定义名空间&#xff0c;不需要使用Spring的配置文件配置第三方框架本身内容&#xff0c;例如&#xff1a;MyBatis&#xff1b; ​ 需要引入第三方框架命名空间&#xff0c;需要使用…

Javascript-web API-day02

文章目录 01-事件监听02-点击关闭广告03-随机点名案例04-鼠标经过或离开事件05-可点击的轮播图06-小米搜索框07-键盘类型事件08-键盘事件-发布评论案例09-focus选择器10-评论回车发布11-事件对象12-trim方法13-环境对象14-回调函数15-tab栏切换 01-事件监听 <!DOCTYPE html…

powershell(1)

免责声明 学习视频来自 B 站up主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下代码、网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 泷羽sec官网&#xff1a;http…

GraphReader: 将长文本结构化为图,并让 agent 自主探索,结合的大模型长文本处理增强方法

GraphReader: 将长文本结构化为图&#xff0c;并让 agent 自主探索&#xff0c;结合的大模型长文本处理增强方法 论文大纲理解为什么大模型和知识图谱不够&#xff1f;还要多智能体 设计思路数据分析解法拆解全流程核心模式提问为什么传统的长文本处理方法会随着文本长度增加而…