当前位置: 首页 > article >正文

图(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.kler.cn/a/443017.html

相关文章:

  • 【渗透测试术语总结】
  • 慧集通(DataLinkX)iPaaS集成平台-数据流程之流程透明化调试功能简介
  • 代码随想录 哈希 test 8
  • FPGA的 基本结构(Xilinx 公司Virtex-II 系列FPGA )
  • 【cuda学习日记】2.2 使用2维网络(grid)和2维块(block)对矩阵进行求和
  • 流媒体内网穿透/组网/网络映射EasyNTS上云网关启动失败如何解决?
  • 如何配置VMware虚拟机的网络,使局域网内其它电脑可以访问?
  • git退掉远程仓库里的某个修改和记录
  • 鸿蒙风起,未来已来——云学堂鸿蒙应用认证开营啦!
  • C语言中信号量:<semaphore.h>头文件
  • 2024年12月18日Github流行趋势
  • vue3渲染el-tree组件,给默认选中的节点,禁用所有子节点
  • C# 实现 WinForm 全屏置顶
  • systemverilog中的循环(loop)
  • 批量DWG文件转换低版本(CAD图转低版本)——c#插件实现
  • TCP 三次握手四次挥手
  • Jmeter的性能测试
  • 汽车供应链 “剧变”开始,“智能感知潜在龙头”诞生
  • 自己构建的python如何可以通过 PyPI安装
  • 【多模态】swift框架使用qwen2-vl
  • C# OpenCvSharp DNN 实现百度网盘AI大赛-表格检测第2名方案第一部分-表格边界框检测
  • 网络协议详解---TCP、HTTP、WebSocket、socket、轮询等
  • Unity3D Shader实现黑洞效果详解
  • AI 语言模型产业的投资困境与发展困境分析
  • 细说STM32F407单片机SPI基础知识
  • 【HAL库】STM32CubeMX开发----STM32F407----Time定时器中断实验