[05数据结构](初阶)二叉树的基本理解、堆的概念和结构及二叉树OJ面试题

9 篇文章 0 订阅 ¥89.90 ¥99.00

本章我可能会犯错、要注意的点:

  1. 满二叉树、完全二叉树、树的度、树的高度的概念
  2. 二叉树父亲节点与孩子节点关系计算
  3. 二叉树不存在 度 大于2的节点     (      度最大为2     )
  4. 二叉树是有序树有左右之分,次序不能颠倒
  5. 完全二叉树中,度为1的最多只有1个
  6. 注意:堆是一个完全二叉树
  7. 因为堆是完全二叉树所以数组形式,而其他二叉树都是链式形式
  8. 堆,要么是大堆,要么是小堆;   大小堆是让“   堆  ”成为“ 堆 ” 的条件
  9. 大小堆的概念
  10. 大小堆的应用:(1)堆排序   (2)topK问题
  11. 堆的代码结构定义顺序表类似
  12. 向上向下调整都需要调整树的高度h次,即:时间复杂度为:O(log2_N)
  13. 建堆时间复杂度是 O(N)【公式推导过程复杂】
  14. 想想为什么要用堆实现Topk问题?在N非常大的时候,其他算法为什么不行?
  15. *最大的K个数,是建立小堆。(注意:是反过来的,选大建小;选小建大)(体会原因)
  16. 优化建堆操作,使空间复杂度为O(1),即直接对数组a进行操作,有两种方式:                                                                         (1)向上调整  (依次加入,然后调整)                    (2)向下调整  (倒着走,然后调整)
  17. *堆排序 - 升序 - 用大堆!!
  18. 二叉树的层序遍历不需要用到递归,而是队列

目录

本章重点

1、树的概念及结构

1.1树的概念

1.2树的相关概念

1.3树的表示

左孩子右兄弟表示法(表示树的最优结构)

1.4树在实际中的应用

2、二叉树的概念及结构

2.1概念

2.2现实中的二叉树

2.3特殊的二叉树

满二叉树、完全二叉树的重要性质!

2.4✳二叉树的性质

二叉树基础题目

2.5二叉树的存储结构

1.顺序存储

2.链式存储

2.6二叉树父亲节点与孩子节点关系计算

3.二叉树的顺序结构及实现

3.1二叉树的顺序结构

3.2堆的概念及结构

堆的概念

大小堆的应用

4、堆的实现

(1)定义堆

(2)初始化堆

(3)交换父子结点

(4)打印堆内数据

(5)堆是否为空

(6)取堆顶数据

(7)销毁堆

(8)✳向上调整

(9)✳数据插入堆(拿最大堆举例,即:插入后仍是保持大堆)

对于插入堆来说,最大堆、最小堆都是向上调整

(10)✳向下调整

(11)✳删除堆顶数据(拿最大堆举例,即:删除后仍保持是大堆)

对于删除堆顶数据来说,最大堆、最小堆都是需要向下调整

※向下、向上调整的时间复杂度log2_N

5、建堆的应用

(1)TopK问题

实现TopK算法(最小的K个数)-- 建立小堆

(2)堆排序

堆排序  -  (向下调整建x堆+x堆)

排升序  -  (向下调整建大堆+大堆)

排降序  -  (向下调整建小堆+小堆)

建堆的时间复杂度O(N)证明

4.二叉树的链式结构及实现

4.1为什么要存在链式二叉树?

4.2二叉树的遍历

(1)前序遍历

(2)中序遍历

(3)后序遍历

(4)层序遍历

层序遍历应用题  ---  判断一棵二叉树不是完全二叉树

销毁二叉树

4.3二叉树节点计数

(1)二叉树节点计数正确写法(传地址)

(2)最优化的二叉树节点计数算法(通过返回值,“校长摇人”)

4.4 二叉树叶子节点计数

4.5二叉树第K层节点个数(难理解!)

4.6二叉树的深度/高度

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.阿Q.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值