数据结构个人总结(附真题练习)
个人学习数据结构知识点的视频整理
数据结构期末考前救急(12大模块)
2、画二叉树:7:46
3、求叶子节点(出入度):17:05
4、建立二叉排序树:21:28
6、存储地址:33:36
7、代码设计:36:05
8、哈夫曼树:38:55✩
9、最小生成树:43:23
10、深度遍历、广度遍历、邻里表建立:47:25✩
12、排序:65:59✩
推荐视频:https://www.bilibili.com/video/BV16J411b7ar?spm_id_from=333.999.0.0
分析题
哈夫曼树✩
推荐视频:https://www.bilibili.com/video/BV1wX4y1M7TG?from=search&seid=10300161456078262055&spm_id_from=333.337.0.0
二叉排序树 二叉搜索树✩
根据数列画出二叉排序树,写出对应ASL (层数x个数)/个数
左子树所有结点小于其根结点
推荐视频:https://www.bilibili.com/video/BV1xy4y1e7Zj?spm_id_from=333.999.0.0
图的储存和遍历✩
推荐视频:https://www.bilibili.com/video/BV1nW411h7q2?from=search&seid=10216318294847704744&spm_id_from=333.337.0.0
图的遍历✩
DFS深度优先(任意选一个节点出发,一直走到底,到底还剩就往回一级跳,跳到有就是条新路,直到走完)
BFS广度优先(任意选一个节点出发,一层一层找下去,每一层有顺序讲究,取决于你前一层定义的顺序,否则会短连)
推荐视频:https://www.bilibili.com/video/BV1Ks411579J
冒泡排序✩
推荐视频:https://www.bilibili.com/video/BV13J411L72U
算法题
链表
https://www.bilibili.com/video/BV1yv411y7AW/?spm_id_from=333.788.recommend_more_video.-1
https://www.bilibili.com/video/BV1to4y1R7na?spm_id_from=333.999.0.0
双链表
二叉树代码实现
https://www.bilibili.com/video/BV1Qx411m7jE?spm_id_from=333.999.0.0
单选题 填空题
时间复杂度
推荐视频:https://www.bilibili.com/video/BV17A411778E?from=search&seid=12775409055716077176&spm_id_from=333.337.0.0
存储地址
前缀 中缀 后缀 表达式之间的转换
推荐视频:https://www.bilibili.com/video/BV1Rf4y1G7XY?spm_id_from=333.999.0.0
树 二叉树 森林之间的转换
推荐视频:https://www.bilibili.com/video/BV1Sq4y1M7cs?from=search&seid=3130114756200581586&spm_id_from=333.337.0.0
建立对应二叉树的线索二叉树
二叉树的前序中序后序遍历,根据前中、前后、中后排序构造二叉树
推荐视频:https://www.bilibili.com/video/BV1Fh4112795?spm_id_from=333.999.0.0
根据矩阵直接写出深度与广度遍历
根据连通图画邻接表✩
主要就是无向连通图和有向带权连通图构建邻接表
步骤:1.构建顶点表(按照顶点信息、边表的头指针)2.构建边表(连通图带权要多一个域存储权重)按照下标、权重、指向下一节点指针域。最后没有下一个节点连接了,那他的指针域为空(∧)
根据邻接表画图✩
标好全部顶点,从顶点表到各个边表标好箭头线,写上权重
根据邻接表画邻接矩阵✩
写出行和列标好序号(对应数值),用中括号包裹,邻接表带权的矩阵不连通处补无穷大,邻接表不带权的矩阵不连通处补0,对角线都为0或无穷大。无向图有对称性,有向图无对称性,无向图取对角线上部分去画图就行了(因为对称且双向)。
推荐视频:
https://www.bilibili.com/video/BV1cy4y1m7mk?spm_id_from=333.999.0.0
求最小生成树
普里姆算法(从顶点(入度0)开始,选择权重小的路径,不可闭环)
克普斯卡尔算法(依次按权重取出边 ,各独立块后,再取权重小的相连,不可闭环)
推荐视频:https://www.bilibili.com/video/BV1WK4y1W7q3/?spm_id_from=333.788.recommend_more_video.4
根据AOV-网写出所有的拓扑序列
求最短路径
迪杰斯特算法
1.设从某一顶点出发,画出该点到各个顶点虚指向线,若连接线与原题中方向相同 保留线,再以新结点去连接...看视频:https://www.bilibili.com/video/BV1DA411s7cU?spm_id_from=333.999.0.0
求关键路径 关键路径长度(取入度0路径 切路径权重最大的)
不过不推荐他的方法,直接像我这样路径相加,保留大值划掉小值就可以了。

链表与数组概念
推荐视频:https://www.bilibili.com/video/BV1S64y1W7u5?from=search&seid=9488747729139507690&spm_id_from=333.337.0.0
哈希表概念
线性探测法 链地址法
快速排序【O(nlog2n)】稳定
https://www.bilibili.com/video/BV1Kb4y1m7ri

直接选择排序【O(n2)】不稳定(假定选取是最小往后比对)
https://www.bilibili.com/video/BV1ev411C7V2

直接插入排序【O(n2)】稳定
https://www.bilibili.com/video/BV1ng411j7u2

冒泡排序【O(n2)】稳定
https://www.bilibili.com/video/BV13J411L72U

堆排序【O(nlog2n)】不稳定
https://www.bilibili.com/video/BV1K4411X7fq/?spm_id_from=333.788

归并排序【O(nlog2n)】稳定

期末考试老师出题范围对应知识点整理
选择题:
求叶子结点 出入度:根据两个公式N=N0+N1+N2+N3+N4、N=0xN0+1xN1+2xN2+3xN3+4xN4+1
https://www.bilibili.com/video/BV16J411b7ar?spm_id_from=333.999.0.0 17:05
树的遍历 根据排序构造二叉树:前(DLR)中(LDR)后(LRD)
https://www.bilibili.com/video/BV1Fh4112795?spm_id_from=333.999.0.0
栈(求容量):只在一端进行插入和删除 只移动栈顶指针
队列(求操作后所在位置):队尾rear添加 对头front删除 运动方向一致从左到右
插入移动次数
https://www.bilibili.com/video/BV1ub4y1m7Qj/?spm_id_from=autoNext
二叉树的性质:
求树结点数=总度数+1
求叶子结点数=出度为2的结点个数+1
求二叉树第i层有几个结点:2i-1个结点(i>=1)
求结点总数:高度为h的二叉树最多有2h-1个结点(h>=1)(也是满二叉树)
非空二叉树只有一个根节点
每个结点最多有两根子树,分为左子树和右子树
度为0的二叉树总是比度为2的结点多一个
满二叉树:每一层上面的结点均达到最大值 放满
完全二叉树:除最后一层,每一层的节点数均达到最大值,而最后一层缺少右边的若干结点
https://www.bilibili.com/video/BV1mh411977j/?spm_id_from=333.788.recommend_more_video.0
习题:https://www.bilibili.com/video/BV11h411z7uP/?spm_id_from=autoNext
存储结构(顺序、链式)
填空题:
算法的复杂度
常熟阶O(1)
对数阶O(logN) while循环
线性阶O(n) for循环
线性对数阶O(nlogN) for循环嵌套while
平方阶O(n2) 双重for循环
立方阶O(n3) 三重for循环
n次方阶O(nn) n重for循环
指数阶乘O(2^)
阶乘O(n!)
二分查找方法查找长度为n的线性表 O(log2n)
折半查找
数组元素
算法填空题:
合并线性表
双向链表插入

交换二叉树左右孩子
void exchange(struct TreeNode *T){/*交换左右子树核心代码*/
if(T!=NULL){
struct TreeNode *temp;
temp=T->left;
T->left=T->right;
T->right=temp;
exchange(T->left);
exchange(T->right);
}
分析题:
哈夫曼树
创建二叉排序树、中序遍历二叉树
根据数列画出二叉排序树,写出对应ASL (层数x个数)/个数
左子树所有结点小于其根结点
https://www.bilibili.com/video/BV1xy4y1e7Zj?spm_id_from=333.999.0.0
图的遍历和存储
DFS深度优先(任意选一个节点出发,一直走到底,到底还剩就往回一级跳,跳到有就是条新路,直到走完)
BFS广度优先(任意选一个节点出发,一层一层找下去,每一层有顺序讲究,取决于你前一层定义的顺序,否则会短连)
https://www.bilibili.com/video/BV1Ks411579J
冒泡排序
https://www.bilibili.com/video/BV13J411L72U
各个排序的时间复杂度
|
排序算法 |
平均时间复杂度 |
最坏时间复杂度 |
最好时间复杂度 |
空间复杂度 |
稳定性 |
|
冒泡排序 |
O(n²) |
O(n²) |
O(n) |
O(1) |
稳定 |
|
直接选择排序 |
O(n²) |
O(n²) |
O(n) |
O(1) |
不稳定 |
|
直接插入排序 |
O(n²) |
O(n²) |
O(n) |
O(1) |
稳定 |
|
快速排序 |
O(nlogn) |
O(n²) |
O(nlogn) |
O(nlogn) |
不稳定 |
|
堆排序 |
O(nlogn) |
O(nlogn) |
O(nlogn) |
O(1) |
不稳定 |
|
希尔排序 |
O(nlogn) |
O(ns) |
O(n) |
O(1) |
不稳定 |
|
归并排序 |
O(nlogn) |
O(nlogn) |
O(nlogn) |
O(n) |
稳定 |
|
计数排序 |
O(n+k) |
O(n+k) |
O(n+k) |
O(n+k) |
稳定 |
|
基数排序 |
O(N*M) |
O(N*M) |
O(N*M) |
O(M) |
稳定 |




















浙公网安备 33010602011771号