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

 

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

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

相关文章

UE UMG 多级弹出菜单踩坑

多级弹出菜单 https://www.bilibili.com/video/BV1ub411J7nA 运行时添加 widget 的方法 create widget 然后 add child 到某个组件&#xff0c;比如 canvas 运行时修改 widget 位置的方法 set widget slot position 用起来没效果 怀疑是因为我没有传入 slot 但是暂时不知…

sunset: midnight

https://www.vulnhub.com/entry/sunset-midnight,517/ 主机发现端口扫描 探测存活主机&#xff0c;8是靶机 nmap -sP 192.168.56.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-05 16:49 CST Nmap scan report for 192.168.56.1 …

伊克罗德与九科信息共同发布RPA+AI智能机器人解决方案

12月12日&#xff0c;伊克罗德信息在上海举办“创见AI&#xff0c;迈进智能化未来——科技赋能零售电商”活动&#xff0c;与九科信息、亚马逊云科技共同探讨与分享&#xff0c;融合生成式AI技术和智能自动化&#xff08;RPA,Robotic Process Automation&#xff09;在电商零售…

从 CephFS 到 JuiceFS:同程旅行亿级文件存储平台构建之路

随着公司业务的快速发展&#xff0c;同程旅行的非结构化的数据突破 10 亿&#xff0c;在 2022 年&#xff0c;同程首先完成了对象存储服务的建设。当时&#xff0c;分布式文件系统方面&#xff0c;同程使用的是 CephFS&#xff0c;随着数据量的持续增长&#xff0c;CephFS 的高…

固定资产分类,提升资产盘活效益

固定资产是企业长期使用的重要资源&#xff0c;涵盖范围广、种类多&#xff0c;不同的资产需要针对性管理。通过科学的分类与高效的盘活策略&#xff0c;不仅可以优化资源配置&#xff0c;还能提升企业资产的利用效率和经济效益。以下将详细解析固定资产的分类方式和盘活效益的…

【字符串匹配算法——BF算法】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 BF算法介绍及过程演示代码实现过程下节预告KMP算法利用next数组存储子串中j回退的位置&#xff08;…

Linux 文件系统目录结构及其简要介绍

Hello! 亲爱的小伙伴们&#xff0c;大家好呀&#xff08;Smile~&#xff09;&#xff01;我是 H u a z z i Huazzi Huazzi&#xff0c;欢迎观看本篇博客&#xff0c;接下来让我们一起来学习一下Linux 文件系统目录结构吧&#xff01;祝你有所收获&#xff01; 本篇博客的目录&a…

小米准备入局Nas?Nas究竟是啥?能干啥?

一开头就来了个三连问&#xff1a;小米准备入局Nas&#xff1f;Nas究竟是啥&#xff1f;Nas能干啥&#xff1f; 好像这段时间Nas这个词频频出现&#xff0c;但很多小伙伴都不知道这个是什么设备。首先咱们来解决一下名词Nas是什么意思。 什么是Nas&#xff1f; 为了尽可能解释…

基于Socket实现客户端和服务端的Tcp通信(C#)

0.前言 使用C#和Unity实现复刻Liar’s bar中的功能 软件开发大作业 本系列文章用于记录与分享开发过程中使用到的知识点&#xff0c;以及常见错误 本文主要描述有关网络编程的内容 目录 0.前言1.使用Socket搭建Server1.1Server端的Socket连接1.2 Server端接收Client的信息1.3…

游戏AI实现-寻路算法(A*)

A*&#xff08;A-star&#xff09;是一种图遍历和寻路算法&#xff0c;由于其完整性、最优性和最佳效率&#xff0c;它被用于计算机科学的许多领域。给定一个加权图、一个源节点和一个目标节点&#xff0c;该算法将找到从源到目标的最短路径&#xff08;相对于给定的权重&#…

汽车供应链 “剧变”开始,“智能感知潜在龙头”诞生

智能汽车产业链“剧变”已经开启&#xff0c;智能感知软硬件能力的权重正在不断被放大。 比如满足高阶泊车的第二代AK2超声波传感器、满足人机共驾场景需求的电子外后视镜&#xff08;CMS&#xff09;、iTOF 3D成像视觉感知&#xff08;用于舱内监控&#xff09;等新产品&…

Latex中表格添加底部文本注释并调整对齐

如何实现从第一个表到第三个表的转换&#xff0c; 其中主要涉及到两点&#xff1a; &#xff08;1&#xff09;底部脚注与表格自动对齐并缩进换行 &#xff08;2&#xff09;表格自适应页面宽度 底部脚注的对齐与换行缩进需要用到 \usepackage{threeparttable} \usepackage{…

html基础-认识html

1.什么是html html是浏览器可以识别的的标记语言&#xff0c;我们在浏览器浏览的网页就是一个个的html文档 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>认识html</title> </head> <body><h1…

利用高德API获取整个城市的公交路线并可视化(七)

本篇文章是对我们从高德拿到的公交/地铁的json文件的精细化处理的一个深入解析&#xff0c;通过对这些原始数据进行详细的清洗、转换和分析&#xff0c;我们通过对数据的质量和可用性的提升&#xff0c;来为后续的数据精细化处理和研究做基础数据的支撑&#xff0c;从而为后续的…

OGV格式如何转换成MP4格式?五款视频格式转换工具

在数字时代&#xff0c;视频已成为我们日常生活、工作和学习中不可或缺的一部分。而不同的设备和平台往往支持不同的视频格式&#xff0c;这就需要对视频进行格式转换。 OGV&#xff08;Ogg Video File&#xff09;是一种使用OGG开源格式的容器&#xff0c;用于存储带或不带音频…

番外篇 | Hyper-YOLO:超图计算与YOLO架构相结合成为目标检测新的SOTA !

前言:Hello大家好,我是小哥谈。Hyper-YOLO,该方法融合了超图计算以捕捉视觉特征之间复杂的高阶关联。传统的YOLO模型虽然功能强大,但其颈部设计存在局限性,限制了跨层特征的融合以及高阶特征关系的利用。Hyper-YOLO在骨干和颈部的联合增强下,成为一个突破性的架构。在COC…

C语言小练习-打印字母倒三角

编写一个程序&#xff0c;在用户输入某个大写字母后&#xff0c;产生一个金字塔图案。 #include <stdio.h>int main(int argc,char *argv[]) {char ch; loop:printf("请输入大写字母&#xff01;\n");scanf("%c",&ch);getchar();if(ch < A ||…

FutureCompletableFuture实战

1. Callable&Future&FutureTask介绍 直接继承Thread或者实现Runnable接口都可以创建线程&#xff0c;但是这两种方法都有一个问题就是&#xff1a;没有返回值&#xff0c;也就是不能获取执行完的结果。因此java1.5就提供了Callable接口来实现这一场景&#xff0c;而Fu…

阿尔茨海默症数据集,使用yolo,voc,coco格式对2013张原始图片进行标注,可识别轻微,中等和正常的症状

阿尔茨海默症数据集,使用yolo&#xff0c;voc&#xff0c;coco格式对2013张原始图片进行标注&#xff0c;可识别轻微&#xff0c;中等&#xff0c;严重和正常的症状 数据集分割 训练组100&#xff05; 2013图片 有效集&#xff05; 0图片 测试集&#xf…

[代码随想录21二叉树]二叉树的修改和改造,修剪二叉树,将有序数组转为二叉搜索树

前言 二叉树章节最后的题目了&#xff0c;就是对搜索二叉树的改造&#xff0c; 题目链接 669. 修剪二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 108. 将有序数组转换为二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 一、修剪二叉搜索树 思路&#xff1a;等会…