数据结构个人总结(附真题练习)

个人学习数据结构知识点的视频整理

数据结构期末考前救急(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/BV1FJ411X7w2?from=search&seid=15359038509239319506&spm_id_from=333.337.0.0

二叉树代码实现

推荐视频:https://www.bilibili.com/video/BV1Qx411m7Lb?from=search&seid=5134952718205543397&spm_id_from=333.337.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/BV1LA411W7Wi?from=search&seid=14166528636224715203&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.构建边表(连通图带权要多一个域存储权重)按照下标、权重、指向下一节点指针域。最后没有下一个节点连接了,那他的指针域为空(∧)

推荐视频:https://www.bilibili.com/video/BV1nT4y1N7xL?from=search&seid=16454521220762520750&spm_id_from=333.337.0.0

根据邻接表画图

标好全部顶点,从顶点表到各个边表标好箭头线,写上权重

根据邻接表画邻接矩阵✩

写出行和列标好序号(对应数值),用中括号包裹,邻接表带权的矩阵不连通处补无穷大,邻接表不带权的矩阵不连通处补0,对角线都为0或无穷大。无向图有对称性,有向图无对称性,无向图取对角线上部分去画图就行了(因为对称且双向)。

推荐视频:

https://www.bilibili.com/video/BV1cy4y1m7mk?spm_id_from=333.999.0.0

https://www.bilibili.com/video/BV1tZ4y1W7v2?from=search&seid=16454521220762520750&spm_id_from=333.337.0.0

求最小生成树

普里姆算法(从顶点(入度0)开始,选择权重小的路径,不可闭环)

克普斯卡尔算法(依次按权重取出边 ,各独立块后,再取权重小的相连,不可闭环)

推荐视频:https://www.bilibili.com/video/BV1WK4y1W7q3/?spm_id_from=333.788.recommend_more_video.4

根据AOV-网写出所有的拓扑序列

推荐视频:https://www.bilibili.com/video/BV1uf4y1U7DX?from=search&seid=6100158751655452887&spm_id_from=333.337.0.0

求最短路径

迪杰斯特算法

1.设从某一顶点出发,画出该点到各个顶点虚指向线,若连接线与原题中方向相同 保留线,再以新结点去连接...看视频:https://www.bilibili.com/video/BV1DA411s7cU?spm_id_from=333.999.0.0

求关键路径 关键路径长度(取入度0路径 切路径权重最大的)

推荐视频:https://www.bilibili.com/video/BV1Fq4y1X7Tb?from=search&seid=3095019295278204273&spm_id_from=333.337.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/BV1jb4y1Y7aE?from=search&seid=13235742882841991740&spm_id_from=333.337.0.0

习题:https://www.bilibili.com/video/BV11h411z7uP/?spm_id_from=autoNext

存储结构(顺序、链式)

https://www.bilibili.com/video/BV1sU4y1s7bH?from=search&seid=2240752725444453772&spm_id_from=333.337.0.0

填空题:

算法的复杂度

常熟阶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)

https://www.bilibili.com/video/BV14j411f7DJ?from=search&seid=8052655956111642084&spm_id_from=333.337.0.0

折半查找

https://www.bilibili.com/video/BV1i4411a78o?from=search&seid=14488354582126451533&spm_id_from=333.337.0.0

数组元素

算法填空题:

合并线性表

双向链表插入

交换二叉树左右孩子

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);
    } 

分析题:

哈夫曼树

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

图的遍历和存储

DFS深度优先(任意选一个节点出发,一直走到底,到底还剩就往回一级跳,跳到有就是条新路,直到走完)

BFS广度优先(任意选一个节点出发,一层一层找下去,每一层有顺序讲究,取决于你前一层定义的顺序,否则会短连)

https://www.bilibili.com/video/BV1nW411h7q2?from=search&seid=10216318294847704744&spm_id_from=333.337.0.0

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)

稳定

真题练习

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

严蔚敏《数据结构》github:https://github.com/kangjianwei/Data-Structure

posted @ 2021-12-08 17:22  南柯Dream丶  阅读(62)  评论(0)    收藏  举报