数据结构大观

王道课整理自用

1、时间复杂度和空间复杂度

时间复杂度

关注递归调用的次数

eg:

1、嵌套循环

2、单层循环

可以忽略幂次较小的项简化计算

3、简单递归

分析递归次数和问题规模n的关系,找到了递归的次数就可以确定时间复杂度

空间复杂度

关注递归调用的深度

考法:结合算法题,分析自己设计的算法

注意影响辅助空间大小的两个方面:

1、算法运行过程中各种变量所占空间(如:辅助数组)

2、递归工作栈带来的空间复杂度(通常和递归深度同等数量级)

eg:

可以选不复杂的暴力法

2、线性表的顺序表示

顺序表的基本操作

3、线性表的链式表示

考法:

1、代码定义链表结点

2、单链表的遍历

3、删除或插入某结点

4、逆置单链表(头插法)

头插法

头插防断链

尾插法

单链表基本操作

例题:

逆置

4、栈和队列基本性质

栈:LIFO

队列:FIFO

考法:输出序列合法性可能性

5、栈和队列的存储结构

难点:循环队列的初始状态、入队/出队、判空/判满

6、双端队列

输入受限,代入选项即可

8、特殊矩阵的压缩存储

对称矩阵的压缩存储

三角矩阵的压缩存储

三对角矩阵的压缩存储

稀疏矩阵

三元组或十字链表

9、多维数组存储

普通矩阵(多维数组)的存储

10、串的模式匹配

朴素匹配

KMP算法

11、树的性质

1、除根结点外,每个结点都有一条边指向,一条边对应一个度,因此结点总数总度数加1

2、度为m的树中有多少个结点、多少个叶子结点、分支节点第h层最多有多少个结点等问题

c

12、二叉树定义和性质

如果二叉树有n个结点,判断是否是分支结点:i<=n/2向下取整,则该结点为分支结点eg:13/2向下取整为6,则小于等于6的结点均为分支结点

二叉树结点的度:

完全二叉树最多只有一个度为1的结点,结点总数n为偶数,则有一个度为1的结点,反之若n为偶数,则没有度为1的结点

有n个结点的二叉树,h=log2n(向下取整)+1或log2(n+1)(向上取整)

二叉树的顺序存储

13、二叉树遍历

先中后序遍历

层序遍历

14、森林二叉树的转换

孩子关系挂到左边,兄弟关系挂到右边

重点题

15、线索二叉树

16、哈夫曼编码(重点)

哈夫曼树的构造:

例题:多叉哈夫曼树构造

哈夫曼树的性质:

考察性质2,2*n2+1=115

哈夫曼编码:

17、并查集(408新考点)

画图题:

18、图的基本概念

19、图的存储和基本操作

领接矩阵存储法

领接表存储

常见出题点:使用不同的存储结构对某算法时间复杂度的影响

B

C

矩阵不对称对应有向图,统计入度和出度之和

20、图的遍历(重点)

BFS

DFS

21、最小生成树(Prim,克鲁斯卡尔)

Prim:每次挑选一个顶点加入生成树并保证加入的代价最小,即点->边->点...

克鲁斯卡尔Kruskal:每次挑选一个边加入生成树并保证加入的代价最小

最小生成树的性质

22、最短路径(迪杰斯特拉,弗洛伊德)

Dijkstra

Floyd

适用范围

23、拓扑排序

每次删除入度为0的结点

24、关键路径

eg:番茄炒蛋

25、有向无环图

30、顺序查找、折半查找

顺序查找

优化方法

折半查找

代码(五星重要)

判定树

画出判定树,A选项中180应该在200的右子树,但200的右子树应该都是大于200的值,故A错误

27、二叉排序树

二叉排序树的插入

二叉排序树的删除

28、平衡二叉树

平衡二叉树的插入和旋转

30、B树和B+树(自命题不考)

n表示有分支结点中有多少分支

B树和B+树的区别

3阶-2叉-1个关键字-二叉树

A

D

B树的查找

B树的插入

B树的删除

D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值