hot100 |八、二叉树
1-leetcode94. 二叉树的中序遍历
注意:√
- 递归方法已经很熟练了,两种不同的递归方式
- 迭代法需要注意,
zrm就遇到了要求迭代实现,前序遍历和后续遍历其实不难,中序遍历用的少,注意看一看
// 1.递归方法1List<Integer> res = new ArrayList<>();public List<Integer> inorderTraversal(TreeNode root) {traverse(root);return res;}private void traverse(TreeNode root) {if (root == null) {return;}traverse(root.left);// 中序位置res.add(root.val);traverse(root.right);}// 2.递归方法2public List<Integer> inorderTraversal1(TreeNode root) {List<Integer> res = new ArrayList<>();if (root == null) {return res;}res.addAll(inorderTraversal1(root.left));res.add(root.val);res.addAll(inorderTraversal1(root.right));return res;}// 3.迭代方法public List<Integer> inorderTraversal2(TreeNode root) {List<Integer> res = new ArrayList<>();Stack<TreeNode> stack = new Stack<>();TreeNode cur = root;while (cur != null || !stack.isEmpty()) {if (cur != null) {stack.add(cur);cur = cur.left;}else {cur = stack.pop();res.add(cur.val);cur = cur.right;}}return res;}
2-leetcode104. 二叉树的最大深度
注意:√
- 动态规划思想,秒杀
public int maxDepth(TreeNode root) {if (root == null){return 0;}int leftDepth = maxDepth(root.left);int rightDepth = maxDepth(root.right);return Math.max(leftDepth, rightDepth) +1;}
3-leetcode226. 翻转二叉树
注意:√
- 递归的思想,注意一下要提前保存左右的节点索引
public TreeNode invertTree(TreeNode root) {if (root == null){return null;}TreeNode leftNode = root.left;TreeNode rightNode = root.right;root.left = invertTree(rightNode);root.right = invertTree(leftNode);return root;}
4-leetcode101. 对称二叉树
注意:×
- 建议直接使用队列的方式,不过注意加入队列的方式,很巧妙
左左,右右, 左右, 右左
public boolean isSymmetric(TreeNode root) {LinkedList<TreeNode> queue = new LinkedList<>();queue.add(root.left);queue.add(root.right);while (queue.size()>0){TreeNode le = queue.pollFirst();TreeNode ri = queue.pollFirst();if (le == null && ri == null){continue;}if (le == null || ri == null){return false;}if (le.val != ri.val) {return false;}queue.add(le.left);queue.add(ri.right);queue.add(le.right);queue.add(ri.left);}return true;}
5-leetcode543. 二叉树的直径
注意:×
- 学习Labuladong,这题可以由maxDepth转过来
- 注意的地方是,这个题目要的是二叉树的直径,也就是路径值,路径值和深度需要体会一下
- 直径长就是左右两个深度加起来
int res = 0;public int diameterOfBinaryTree(TreeNode root) {int x = maxDepth(root);return res;}public int maxDepth(TreeNode root) {if (root == null){return 0;}int leftDepth = maxDepth(root.left);int rightDepth = maxDepth(root.right);int curDepth = leftDepth + rightDepth;res = Math.max(curDepth, res);return Math.max(leftDepth, rightDepth) +1;}
6-leetcode102. 二叉树的层序遍历
注意:××
- 注意加入
queue的时候,要判断是不是空 while循环判断是不是空,不要用size会浪费时间- 最开始就给
res = new LinkedList这样判断root == null的时候可以直接返回结果
public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> res = new LinkedList<>();if (root == null){return res;}LinkedList<TreeNode> queue = new LinkedList<>();queue.add(root);// while (queue.size()>0){while (! queue.isEmpty()){int num = queue.size();List<Integer> list = new LinkedList<>();for (int i = 0; i < num; i++) {TreeNode node = queue.poll();list.add(node.val);if (node.left != null){queue.add(node.left);}if (node.right != null){queue.add(node.right);}}res.add(list);}return res;}
leetcode
注意:√×
相关文章:
hot100 |八、二叉树
1-leetcode94. 二叉树的中序遍历 注意:√ 递归方法已经很熟练了,两种不同的递归方式迭代法需要注意,zrm就遇到了要求迭代实现,前序遍历和后续遍历其实不难,中序遍历用的少,注意看一看 // 1.递归方法1Lis…...
Matlab协方差矩阵分解法生成随机场
Matlab协方差矩阵分解法生成随机场 相关系数矩阵 % function outcohesion(x,y,mu,theta) % end % xyload(F:\Research-OUC\基于机器许学习模型的海底斜坡可靠度研究\基于comsol的斜坡稳定性分析\comsol网格操作\grid_operate-matlab.mphtxt); % xxy(:,1); % yxy(:,2); Xlinspac…...
android 在清单文件中配置receiver,系统是何时会注册此广播接收者的?
在 Android 中,通过清单文件(AndroidManifest.xml)配置的广播接收器(BroadcastReceiver),系统会在特定的时机自动注册这些广播接收器。以下是详细的说明: 静态注册的广播接收器 静态注册的广播…...
嵌入式硬件电路常用设计软件
目录 1. Cadence Allegro 2. PADS 3. Altium Designer 4. Multisim 5. Protues 1. Cadence Allegro 功能: Cadence Allegro是Cadence公司推出的先进PCB(Printed Circuit Board,印刷电路板)设计布线工具,也是目前…...
c#的List<T>的SelectMany 和Select
在C#中,List<T>(以及任何实现了IEnumerable<T>的集合)的Select和SelectMany扩展方法都是LINQ(Language Integrated Query)的一部分,用于对集合中的元素进行查询和转换。 尽管它们的作用有些相…...
69.WEB渗透测试-信息收集- WAF、框架组件识别(9)
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:68.WEB渗透测试-信息收集- WAF、框架组件识别(8) 有无waf存在&am…...
ASCII码对照表(Matplotlib颜色对照表)
文章目录 1、简介1.1 颜色代码 2、Matplotlib库简介2.1 简介2.2 安装2.3 后端2.4 入门例子 3、Matplotlib库颜色3.1 概述3.2 颜色图的分类3.3 颜色格式表示3.4 内置颜色映射3.5 xkcd 颜色映射3.6 颜色命名表 4、Colorcet库5、颜色对照表结语 1、简介 1.1 颜色代码 颜色代码是…...
Mysql-常用函数及其用法总结
1、字符串函数 测试用例如下: 1.1 CONCAT() 将多个字符串连接成一个字符串。 SELECT CONCAT(first_name, , last_name) AS full_name FROM users; -- 期望结果:John Doe, Jane Smith, Michael Johnson 1.2 SUBSTRING() 提取子字符串 SELECT SUBSTR…...
【c++刷题笔记-数组】day29:452. 用最少数量的箭引爆气球、 435. 无重叠区间 、 763.划分字母区间
452. 用最少数量的箭引爆气球 - 力扣(LeetCode) 思路:先按照左边界排序,当前的左边界大于前一个的右边界的时候,表示没有覆盖所以需要一根箭,反之则要更新为最小的右边界 重点:是区间覆盖问题…...
【数据结构】链表带环问题分析及顺序表链表对比分析
【C语言】链表带环问题分析及顺序表链表对比分析 🔥个人主页:大白的编程日记 🔥专栏:C语言学习之路 文章目录 【C语言】链表带环问题分析及顺序表链表对比分析前言一.顺序表和链表对比1.1顺序表和链表的区别1.2缓存利用率&#…...
快速解决找不到krpt.dll,无法继续执行代码问题
对于那些遇到计算机开机出现由于无法找到krpt.dll,进而无法继续执行代码问题的用户。 krpt.dll是计算机系统中与DirectX紧密相关的重要文件,如果它出现问题,可能会对一些特定的软件或游戏的运行产生影响。实际上,我们有多种解决该…...
C# List、LinkedList、Dictionary性能对比
数据结构性能对比 List、LinkedList、Dictionary 1. ArrayList (List:前传) ArrayList 是一个特殊数组, 通过添加和删除元素就可以动态改变数组的长度。 ArrayList集合相对于数组的优点: 支持…...
【Spring Cloud】微服务的简单搭建
文章目录 🍃前言🎄开发环境安装🌳服务拆分的原则🚩单一职责原则🚩服务自治🚩单向依赖 🍀搭建案例介绍🌴数据准备🎋工程搭建🚩构建父子工程🎈创建父…...
全球首款商用,AI为视频自动配音配乐产品上线
近日,海外推出了一款名为Resona V2A的产品,这是全球首款商用视频转音频 (V2A) 技术产品。这项突破性技术利用AI,仅凭视频数据即可自动生成高质量、与上下文相关的音频,包括声音设计、音效、拟音和环境音,为电影制作人、…...
Git管理源代码、git简介,工作区、暂存区和仓库区,git远程仓库github,创建远程仓库、配置SSH,克隆项目
学习目标 能够说出git的作用和管理源代码的特点能够如何创建git仓库并添加忽略文件能够使用add、commit、push、pull等命令实现源代码管理能够使用github远程仓库托管源代码能够说出代码冲突原因和解决办法能够说出 git 标签的作用能够使用使用git实现分支创建,合并…...
【机器学习】机器学习与时间序列分析的融合应用与性能优化新探索
文章目录 引言第一章:机器学习在时间序列分析中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 数据增强 1.2 模型选择1.2.1 自回归模型1.2.2 移动平均模型1.2.3 长短期记忆网络1.2.4 卷积神经网络 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 A…...
执行力不足是因为选择模糊
选择模糊:执行力不足的根源 选择模糊是指在面对多个选项时,缺乏明确的目标和方向。这种模糊感会导致犹豫不决,进而影响我们的执行力。 选择模糊的表现: 目标不明确,不知道应该做什么。优先级混乱,不清楚…...
力扣 225题 用队列实现栈 记录
题目描述 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素…...
中英双语介绍意大利(Italy):有哪些著名景点、出名品牌?
中文版 意大利概述 意大利,位于欧洲南部,是一个以其悠久的历史、丰富的文化遗产和美丽的自然风光而闻名的国家。意大利不仅是文艺复兴的发源地,还拥有众多世界著名的城市、景点和品牌。 著名城市 罗马(Rome)&#x…...
Python【打包exe文件两步到位】
Python打包Exe 安装 pyinstaller(pip install pyinstaller) 执行打包命令(pyinstaller demo.py) 打完包会生成 dist 文件夹,如下如...
零基础学A人工智能: 4.大模型基础与本地部署全指南
今天我们正式开启AI大模型的学习,从最基础的大模型概念讲起,到本地部署大模型的完整流程,再到Ollama工具的全功能详解,最后延伸到完整的AI聊天机器人项目架构,帮大家从零搭建起大模型应用的完整知识体系,零…...
别再只测电压了!解锁杰理AC632蓝牙芯片ADC的隐藏玩法:电池检测与低功耗设计
杰理AC632蓝牙芯片ADC实战:电池检测与低功耗设计全解析 在蓝牙耳机、智能穿戴等电池供电设备的开发中,精准的电池电量监测和低功耗设计往往是决定产品成败的关键因素。杰理AC632作为一款广泛应用于消费电子领域的蓝牙芯片,其内置的ADC功能为开…...
HardSourceWebpackPlugin插件生态:ExcludeModulePlugin和ParallelModulePlugin深度解析
HardSourceWebpackPlugin插件生态:ExcludeModulePlugin和ParallelModulePlugin深度解析 【免费下载链接】hard-source-webpack-plugin 项目地址: https://gitcode.com/gh_mirrors/ha/hard-source-webpack-plugin HardSourceWebpackPlugin是Webpack生态中一款…...
细说杨乃武与小白菜案
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、案件二、精神分析学---心理防御机制三、关于我自己总结前言 一、案件 略,后面补 二、精神分析学—心理防御机制 在这个案件我主要关注县令和小…...
如何进行 SEO 效果追踪和数据分析_SEO 优化与社交媒体营销的结合方式是什么
SEO 效果追踪和数据分析的重要性 在当今数字化时代,SEO(搜索引擎优化)和社交媒体营销已经成为企业推广和品牌建立的重要手段。如何进行有效的SEO效果追踪和数据分析,以及如何将SEO优化与社交媒体营销结合起来,是每一个…...
OpCore-Simplify:让黑苹果配置从3天缩短到15分钟的智能助手
OpCore-Simplify:让黑苹果配置从3天缩短到15分钟的智能助手 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾因为复杂的黑苹果配置…...
Jupyter notebook打不开本地文件,有关目录存放问题
Jupyter notebook打不开本地文件,有关目录存放问题 基于Anaconda下载后,点击Jupyter notebook无法打开文件目录问题,或者需要更改打开的文件目录,主要解决方法:修改配置文件和路径。 第一步:修改配置文件 打…...
SDMatte模型参数调优指南:平衡抠图速度与精度的艺术
SDMatte模型参数调优指南:平衡抠图速度与精度的艺术 1. 前言:为什么需要参数调优 当你第一次使用SDMatte进行图像抠图时,可能会发现一个有趣的现象:同样的模型,在不同设置下表现截然不同。有时候处理速度飞快但边缘粗…...
如何15分钟搞定黑苹果配置:OpCore-Simplify零代码自动化终极指南
如何15分钟搞定黑苹果配置:OpCore-Simplify零代码自动化终极指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果配置头…...
浏览器魔法师:Greasy Fork用户脚本终极指南,5分钟解锁网页超能力
浏览器魔法师:Greasy Fork用户脚本终极指南,5分钟解锁网页超能力 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork 你是否厌倦了网页上烦人的广告?想要一…...
