代码随想录刷题|二叉树的总结

简介: 代码随想录刷题|二叉树的总结

二叉树的遍历

       从大的分类来说有两种遍历方式,一种是深度优先遍历,一种是广度优先遍历;比较常用的额就是深度优先遍历的递归法

19fc4c8fa5a24b22a6773de55a20c278.png

   因为这一次练习主要是对递归法的使用,总结以递归为主

       对二叉树的三种递归法的掌握是后面练习的关键,就是是对数组的遍历一样,怎么遍历是一回事,怎么根据题意对节点进行处理时另外一回事

题目总结

简单遍历

144.二叉树的前序遍历

145.二叉树的后序遍历

94.二叉树的中序遍历

226.翻转二叉树

101.对称二叉树

是不是对称二叉树就是检测根节点的左右子树是不是互为翻转二叉树

深度和高度

  • 104.二叉树的最大深度
  • 559.n叉树的最大深度
  • 111.二叉树的最小深度

常见二叉树

  • 222.完全二叉树的节点个数
  • 110.平衡二叉树

递归技巧

  • 404.左叶子之和
  • 怎么判断左叶子是关键
  • 513.找树左下角的值
  • 一次遍历做两件事

回溯思想

  • 257.二叉树的所有路径
  • 112.路径总和
  • 113.路径总和||  

构造二叉树

106. 从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

中序遍历得到的数组不能准确获取到根节点

从前序遍历数组和后序遍历数组中可以准确得到根节点

  • 654.最大二叉树
  • 617.合并二叉树
  • 同时遍历两个二叉树,然后对其节点进行操作
  • 可以创建一个新的树,也可以直接在其中一棵树上进行操作


二叉搜索树

做不出来的时候将二叉搜索树看作有序数组进行处理

  • 700.二叉搜索树中的搜索
  • 98.验证二叉搜索树

双指针法

       将二叉搜索树看作有序数组来对待

  • 530.二叉搜索树的最小绝对值
  • 501.二叉搜索树的众数
  • 538.把二叉树转换成累加树

找节点公共祖先

  • 236.二叉树的最近公共祖先
  • 235.二叉搜索树的最近公共祖先

增删操作

  • 701.二叉搜索树的插入操作
  • 没有难度

450.删除二叉搜索树中的节点

删除一个节点,要分析清楚删除节点的不同情况

因为只删除一个节点,找到这个值的时候就是删除节点和返回的时候

所以删除节点的操作就在终止条件中

669.修剪二叉搜索树

根据特性进行删除会更加轻松

因为要保留的是一个区间,所以大于和小于区间的子树都可以直接略去

实际上就是找到小于左区间的节点,将其和其的左子树去掉

再将大于右区间的节点找到,将其和其的右子树去掉

构建二叉搜索树

  • 108.将有序数组转换成二叉搜索树
  • 跟前、中序和后、中序数组构造二叉树的思路比较像

心得感悟

往往觉得二叉树的题目比较难做的原因是因为对二叉树的遍历不熟悉,对递归不熟悉

其次就是不能根据题目的表意看透题目想考察的内容,比如求二叉树的最大深度其实求树的高度就可以

根据二叉树的特性做题会更简单

递归的终止条件一定要分析清楚情况

选对遍历方式是成功的第一步

遍历过程中的逻辑处理也是比较难以驾驭的,在写代码的时候,站在不同节点的角度时思考起来更轻松


相关文章
|
开发工具 git
git clone TimeOut 无法下载 git 设置代理
git clone TimeOut 无法下载 git 设置代理
480 0
|
缓存 测试技术 编译器
【CMake 疑难解决 】解决find_library查找位置不对的问题
【CMake 疑难解决 】解决find_library查找位置不对的问题
1048 3
|
人工智能 IDE Devops
通义灵码编程智能体,上线!
近期,Qwen3正式发布并开源8款“混合推理模型”,参数量235B,激活仅需22B,性能超越多个国际顶尖模型。通义灵码全面支持Qwen3,上线编程智能体,具备工程级变更、自动感知、工具使用和终端命令执行四大能力。插件集成魔搭MCP广场2400+服务,大幅提升开发效率。目前,通义灵码插件下载超1500万,生成代码超30亿行,服务上万家企业。
|
机器学习/深度学习 JSON 监控
国内最大的MCP中文社区来了,4000多个服务等你体验
国内最大的MCP中文社区MCPServers来了!平台汇聚4000多个服务资源,涵盖娱乐、监控、云平台等多个领域,为开发者提供一站式技术支持。不仅有丰富的中文学习资料,还有详细的实战教程,如一键接入MCP天气服务等。MCPServers专注模块稳定性和实用性,经过99.99% SLA认证,是高效开发的理想选择。立即访问mcpservers.cn,开启你的开发之旅!
14734 16
MCU最小系统电路设计(以STM32F103C8T6为例)-2
MCU最小系统电路设计(以STM32F103C8T6为例)
MCU最小系统电路设计(以STM32F103C8T6为例)-2
|
存储 Java 数据库连接
时序数据库TDengine 3.3.5.0 发布:高并发支持与增量备份功能引领新升级
TDengine 3.3.5.0 版本正式发布,带来多项更新与优化。新特性包括提升 MQTT 稳定性和高并发性能、新增 taosX 增量备份与恢复、支持 JDBC 和 Rust 连接器 STMT2 接口、灵活配置 Grafana Dashboard 等。性能优化涵盖查询内存管控、多级存储迁移、强密码策略等,全面提升时序数据管理的效率和可靠性。欢迎下载体验并提出宝贵意见。
454 5
|
存储 算法 搜索推荐
在Neo4j中实现推荐算法
在Neo4j中实现推荐算法
516 7
|
存储 Java API
阿里云oss简介和使用流程
本文档介绍了如何准备阿里云OSS(对象存储服务)并开始使用它。首先,需要注册阿里云账号并进行实名认证,然后购买OSS资源包。在阿里云控制台中,可以创建和管理OSS存储空间(称为“Bucket”)。接着,文章简要介绍了阿里云OSS,它是一个基于云端的对象存储服务,提供高可靠性、高性能、低成本和易于使用的特性。 在阿里云OSS控制台,用户可以进行文件的上传和下载操作。通过API,开发者可以使用各种编程语言(如Java)来创建、删除Bucket以及上传、下载和删除文件。例如,Java代码示例展示了如何创建Bucket、上传文件、删除文件以及下载文件到本地的操作。
|
安全 机器人 开发者
Sora的五大应用场景
【2月更文挑战第16天】Sora的五大应用场景
1447 2
Sora的五大应用场景
|
SQL 关系型数据库 MySQL
省市区SQL(mysql、postgrel)-接口实现(java)
省市区SQL(mysql、postgrel)-接口实现(java)
1460 0

热门文章

最新文章