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

数据结构:二叉树

目录

1.完全二叉树和链式二叉树

2.普通二叉树的增删查改没有意义

3.前中后序遍历

4.递归的时间复杂度看的是深度

5.二叉树的分治

6.递归函数中传入的参数



1.完全二叉树和链式二叉树

完全二叉树可以用数组表示。

链式二叉树只能用链式结构表示

2.普通二叉树的增删查改没有意义

普通二叉树存储数据没有意义,不如链表和数组

加个性质就有意义了,搜索二叉树,左子树比根小,右子树比根大。类似于二分查找(只不过二分查找必须有序)每搜索一次,减少一半的搜索对象。

二分查找的缺点:1.要求有序

2.要求在数组里

3.不适合增删查改

数据结构搜索:搜索二叉树->平衡二叉搜索树,哈希表,B树

3.前中后序遍历

看待树的方式:根,左子树,右子树

前序遍历:根 左子树 右子树 

 中序遍历:null 3 null 2 null 1  null 5 null  4 null   6 null

后序遍历(左 右 根):null null 3 null 2  null null 5 null null 6 4  1

前中后遍历递归什么时候回来?

为空的时候返回,其余都要一直递归下去(递归注意结束条件

层序遍历:1 2 4 3  5 6

4.递归的时间复杂度看的是深度

递归的时间复杂度看的是深度,而不是递归的次数

因为递归中会还给操作系统栈帧。

栈帧会保存传入的参数

5.二叉树的分治

分治求二叉树的大小

求树的高度

不关心具体的实现,只需写出来方法,具体的需要递归实现

6.递归函数中传入的参数

递归会创建许多的栈帧,每个如果这些栈帧中传入的参数是简单的int i,那么在不同中栈帧中对这个i 修改不会影响到其他的栈帧。所以说递归传入参数的时候最好传入指针,这样在每个栈帧对这个指针的内容修改都会影响到其他栈帧

144. 二叉树的前序遍历 - 力扣(LeetCode)

这道题就是经典的递归传入参数要传指针的问题


http://www.kler.cn/a/5722.html

相关文章:

  • 9.4 visualStudio 2022 配置 cuda 和 torch (c++)
  • ue5动画重定向,一键重定向。ue4小白人替换成ue5
  • MySQL数据导出导入
  • Jenkins pipeline 发送邮件及包含附件
  • WEB攻防-通用漏洞_文件上传_黑白盒审计流程
  • 在Windows环境下搭建无人机模拟器
  • 兆芯最新X86 CPU曝光:性能与英特尔/AMD相比,没落后10年
  • Adobe国际认证师资培训线下班于青岛黄海继续教育中心成功举行!
  • 使用React + Antd4.x + React Router 6.x 封装菜单(多级菜单)和动态面包屑
  • Lazada新店运营思路--店铺成长期的营销玩法
  • 无线自动灌溉系统设计_kaic
  • 集合详解之(三)单列集合接口Set及具体子类HashSet、TreeSet
  • 【redis】RBD-内存快照
  • Vue-封装一个通用的分页组件,并实现全局注册组件使用
  • cyberdefenders—-恶意软件流量分析 2
  • 【分享】如何写出整洁的代码?
  • 《数学建模实战攻略:引言》
  • 第02章_MySQL环境搭建
  • 蓝牙耳机品牌哪个好?好用的无线蓝牙耳机推荐
  • 蓝牙耳机什么牌子便宜耐用?2023年好用实惠的蓝牙耳机推荐
  • 2023给自己规划一个新的起点---Android车载工程师
  • this关键字
  • 【Python入门第四十三天】Python丨NumPy 数据类型
  • Tars请求过程与协议分析
  • 2023蓝桥杯省模拟赛——滑行
  • 二叉树的前中后序遍历以及求深度、叶子节点和二叉树的重建