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

【LeetCodehot100】二叉树大合集 T94:二叉树的中序遍历 T104:二叉树的最大深度 T226:翻转二叉树 T101:对称二叉树

今天题目不算难,我们来个二叉树大集合

T94:二叉树的中序遍历

题目理解
给定一个二叉树根节点root,返回它的中序遍历结果。

核心思路(递归)

递归的本质:

当前节点的结果 = 左子树结果 + 当前节点 + 右子树结果

每次调用:

dfs(node)

其实是在做:

遍历“以 node 为根的整棵子树”

代码实现

//创建结果集合List<Integer>res=newArrayList<>();//调用递归函数dfs(root,res);//返回结果returnres;//中序遍历privatevoiddfs(TreeNodenode,List<Integer>res){//中止条件:节点为空if(node==null){return;}//遍历左子树dfs(node.left,res);//中间res.add(node.val);//右dfs(node.right,res);}

题目感悟

第一次接触树结构,有一些语法需要熟悉,比如:TreeNode
感觉着这就像基础数据,需要记牢,并没有考察太大的思维点。
流程:

创建List集合存放数据
定义中序遍历函数dfs——>终止条件,左遍历,访问中间节点,右遍历。

T104:二叉树的最大深度

题目要求:求二叉树的最大深度

核心思想

本题挺简单的,就只有一个小易错点

不要将返回的长度忘记+1,也就是忘了把根节点加上去。

代码实现

classSolution{publicintmaxDepth(TreeNoderoot){// 终止条件:空节点深度为0if(root==null){return0;}// 递归计算左子树深度intleftDepth=maxDepth(root.left);// 递归计算右子树深度intrightDepth=maxDepth(root.right);// 返回最大深度 + 当前节点returnMath.max(leftDepth,rightDepth)+1;}}

本题感悟

  1. 别忘了+1
  2. 查找树深度的语法为maxDepth();

T226:翻转二叉树

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

简单来说,就是将左子树与右子树进行位置互换

纠正一个概念

我第一下看到返回值是一串数字,下意识认为需要创建一个结果集合来存放结果。但其实只需要return root就行了。

rootroot = 一个数字(比如 4)❌ 这个理解是不对的

root是节点对象里面包含三种元素

root={val:4,left:(节点2),right:(节点7)}

代码实现

classSolution{publicTreeNodeinvertTree(TreeNoderoot){// 终止条件if(root==null){returnnull;}// 交换左右子树TreeNodetemp=root.left;root.left=root.right;root.right=temp;// 递归翻转左右子树invertTree(root.left);invertTree(root.right);returnroot;}}

本题感悟

  1. 递归思想:自己调用自己

T101:对称二叉树

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

核心思路

本题不是遍历一颗树
而是:

同时比较两颗镜像树

一句话核心:

左子树的左 == 右子树的右
左子树的右 == 右子树的左

代码实现

classSolution{publicbooleanisSymmetric(TreeNoderoot){// 空树一定对称if(root==null)returntrue;// 比较左右子树returnisMirror(root.left,root.right);}privatebooleanisMirror(TreeNodeleft,TreeNoderight){// 情况1:都为空 → 对称if(left==null&&right==null){returntrue;}// 情况2:一个为空,一个不为空 → 不对称if(left==null||right==null){returnfalse;}// 情况3:值不相等 → 不对称if(left.val!=right.val){returnfalse;}// 情况4:递归比较“镜像位置”returnisMirror(left.left,right.right)&&isMirror(left.right,right.left);}}

本题感悟

  1. 比较的概念,是左子树的左 == 右子树的右 左子树的右 == 右子树的左
  2. 关于是否镜像对称的判断,分为5步:1.root是否为空 2.是否都为空3.是否一个是空一个不是空 4.左右值是否相等 5.继续递归比较
http://www.jsqmd.com/news/502697/

相关文章:

  • 企业文化经典书籍推荐:这份书单让你学会企业文化建设
  • FakeSMTP终极指南:5分钟搞定邮件发送测试的免费神器
  • 避坑指南:微信支付回调调试的5个常见问题与EchoSite内网穿透配置技巧
  • Qwen1.5-1.8B-GPTQ-Int4多场景应用:客服问答、文案辅助、编程解释实战案例
  • 2025年-2026年大排灯品牌推荐:居家与医美术后场景深度评测,解决反黑与照射死角痛点 - 外贸老黄
  • 告别手动!用Python脚本一键批量转换Labelme标注的JSON文件(附完整代码)
  • 销售类书籍汗牛充栋,只有这些称得上是必读!
  • STM32Modbus RTU包:主从机源码,支持多寄存器写入读取,代码注释详细可读
  • 终极游戏加速指南:如何使用OpenSpeedy开源工具提升游戏体验
  • 复试
  • 打破计量孤岛,告别能耗盲区,实现能耗可视可控
  • 这五本人才管理书籍适合不同阶段的管理者和HR读
  • ChatGPT PC端下载与安装指南:从零开始到高效使用
  • ControlNet-v1-1 FP16终极指南:从零到精通的完整解决方案
  • 工程实录:如何在多模型混用架构中解决“接口碎片化”难题——DMXAPI
  • VXE-Table 中自定义图标的三种实现方式与最佳实践
  • Qt文件操作实战:QFile读写本地文件的5种常见场景与代码示例
  • 关于 Redhat - 9 下 postfix 的安装配置 与 mail 命令发送邮件
  • MapLibre GL Native:构建跨平台移动地图应用的开源利器
  • OpenUAV:如何用12k轨迹数据集破解无人机‘听懂人话’导航的三大现实难题
  • 智驾端到端模型Flow Matching与Diffusion选型及机器人场景差异解析
  • AI普及74%,仍超6成团队陷延期?|2025年 IT行业项目管理全景报告
  • 前端图表革命:Mermaid 与 Markdown 的完美结合
  • 云主机安全加固:从系统、网络到应用的零信任配置
  • PyCharm高效配置Gitee全攻略
  • 重塑丰盈,遇见更美:河北美胸品牌“卓养女王”的科学养护之道 - 中媒介
  • DAMO-YOLO在农业领域的创新应用:作物病虫害检测
  • Mirage Flow大模型Java开发指南:SpringBoot集成实战
  • 基于分布式电源与电动汽车接入的配电网潮流计算方法——考虑风光电动汽车出力时序特性并基于IEEE...
  • DeerFlow智能招聘系统:基于NLP的简历筛选应用