-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path讲义(7).txt
166 lines (158 loc) · 7.83 KB
/
讲义(7).txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
AcWing《考研算法辅导课》讲义
考纲:
一、线性表
(一)线性表的定义和基本操作
(二)线性表的实现
1. 顺序存储
2. 链式存储
3. 线性表的应用
二、栈、队列和数组
(一)栈和队列的基本概念
(二)栈和队列的顺序存储结构
(三)栈和队列的链式存储结构
(四)栈和队列的应用
(五)特殊矩阵的存储和压缩
三、树与二叉树
(一)树的基本概念
(二)二叉树
1. 二叉树的定义及其主要特征
2. 二叉树的顺序存储结构和链式存储结构
3. 二叉树的遍历
4. 线索二叉树的基本概念和构造
(三)树、森林
1. 树的存储结构
2. 森林与二叉树的转换
3. 树和森林的遍历
(四)树与二叉树的应用
1. 二叉排序树
2. 平衡二叉树
3. 哈夫曼(Huffman)树的哈弗曼编码
四、图
(一)图的基本概念
(二)图的存储及基本操作
1. 邻接矩阵法
2. 邻接表法
3. 邻接多重表、十字链表
(三)图的遍历
1. 深度优先搜索
2. 广度优先搜索
(四)图的基本应用
1. 最小(代价)生成树
2. 最短路径
3. 拓扑排序
4. 关键路径
五、查找
(一)查找的基本概念
(二)顺序查找法
(三)分块查找法
(四)折半查找法
(五)B树及其基本操作、B+树及其基本概念
(六)散列(Hash)表
(七)字符串模式匹配(KMP)
(八)查找算法的分析及应用
六、排序
(一)排序的基本概念
(二)插入排序
1. 直接插入排序
2. 折半插入排序
(三)起泡排序(bubble sort)
(四)简单选择排序
(五)希尔排序(shell sort)
(六)快速排序
(七)堆排序
(八)二路归并排序(merge sort)
(九)基数排序
(十)外部排序
(十一)各种内部排序算法的比较
(十二)排序算法的应用
-------------------------------------------------------------------------------------
第一讲 时间复杂度、矩阵展开
一、时间、空间复杂度
只考虑次数,不考虑常数。常见复杂度有:O(1)、O(n)、O(sqrt(n))、O(n^k)、O(logn)、O(nlogn)
考题:2011-1、2012-1、2013-1、2014-1、2017-1、2019-1
二、矩阵展开
矩阵的按行展开、按列展开,展开后下标从0开始。
考题:2016-4、2018-3、2020-1
-------------------------------------------------------------------------------------
第二讲 线性表
1. 将具有线性关系的数据存储到计算机中所使用的存储结构称为线性表。
2. 对于线性表中的数据来说,位于当前数据之前的数据统称为“前趋元素”,前边紧挨着的数据称为“直接前趋”;同样,后边的数据统称为“后继元素”,后边紧挨着的数据称为“直接后继”。
3. 线性表的分类
(1) 数据元素在内存中集中存储,采用顺序表示结构,简称“顺序存储”;
例如:数组
(2) 数据元素在内存中分散存储,采用链式表示结构,简称“链式存储”。
例如:单链表、双链表、循环单(双)链表
4. 不同实现方式的时间复杂度(不要硬背结论、要从实现方式入手分情况讨论,下述为特定情况下的时间复杂度)
(1) 数组:随机索引O(1)、插入O(n)、删除O(n)
(2) 单链表:查找某一元素O(n)、插入O(1)、删除O(n)
(3) 双链表:查找某一元素O(n)、插入O(1)、删除O(1)
5. 考题:2016-1、2016-2、2012-42、2015-41、2019-41
6. 押题:AcWing 34、AcWing 1451
-------------------------------------------------------------------------------------
第三讲 栈与队列
1. 栈和队列的基本概念
2. 栈和队列的顺序存储结构
(1) 栈:栈顶元素位置:指向最后一个元素、指向最后一个元素的下一个位置
(2) 队列:一般采用循环队列。
(a) 队头元素位置:指向第一个元素、指向第一个元素的前一个位置。
(b) 队尾元素位置:指向队尾元素、指向队尾元素的下一个位置。
3. 栈和队列的链式存储结构
4. 栈和队列的应用
(1) 栈的应用:表达式求值(中缀表达式转后缀表达式、括号匹配)、DFS
(2) 队列的应用:BFS
5. 考题:2011-2、2011-3、2012-2、2013-2、2014-2、2014-3、2015-1、2016-3、2017-2、2018-1、2018-2、2019-42、2020-2
6. 押题:AcWing 3302
-------------------------------------------------------------------------------------
第四讲 树(一)
1. 树的基本概念
(1) 树是由根节点和若干颗子树构成的。树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的节点,所定义的关系称为父子关系。父子关系在树的节点之间建立了一个层次结构。在这种层次结构中有一个节点具有特殊的地位,这个节点称为该树的根节点,或称为树根。
(2) 空集合也是树,称为空树。空树中没有节点;
(3) 孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;
(4) 节点的度:一个节点含有的子节点的个数称为该节点的度;
(5) 叶节点或终端节点:度为0的节点称为叶节点;
(6) 非终端节点或分支节点:度不为0的节点;
(7) 双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;
(8) 兄弟节点:具有相同父节点的节点互称为兄弟节点;
(9) 树的度:一棵树中,最大的节点的度称为树的度;
(10) 节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
(11) 树的高度或深度:树中节点的最大层次;
(12) 节点的祖先:从根到该节点所经分支上的所有节点;
(13) 子孙:以某节点为根的子树中任一节点都称为该节点的子孙;
(14) 森林:由棵互不相交的树的集合称为森林。
2. 二叉树
(1) 二叉树的定义及其主要特征
a. 二叉树的基本形态:空二叉树、单节点二叉树、左子树、右子树
b. 性质:
[1] 在非空二叉树中,第i层上至多有2^(i-1) 个结点。
[2] 深度为k的二叉树至多有2^k - 1个结点
[3] 对任何一颗二叉树,若其叶子结点数为n0,度为2的结点数为n2,则n0 = n2 + 1。
[4] n个结点的完全二叉树深度为:log2(n)向下取整 + 1
[5] 二叉树的堆式存储: 节点p的左儿子:2x,右儿子:2x+1
c. 两种特殊的二叉树
[1] 满二叉树:一颗深度为k且有2^k-1个结点的二叉树
[2] 如果深度为k,有n个结点的二叉树,当且仅当其每个结点都与深度为k的满二叉树中编号从1到n的结点一一对应,该二叉树称为完全二叉树
(2) 二叉树的顺序存储结构和链式存储结构
(3) 二叉树的遍历
a. 前序遍历
b. 中序遍历
c. 后序遍历
d. 根据前序 + 中序重建二叉树
(4) 线索二叉树的基本概念和构造
对二叉树节点的指针域做如下规定:
a. 若节点有左孩子,则Lchild指向左孩子,否则指向直接前驱;右孩子同理;
b. 增加两个标志域,Ltag表示指向的是子节点还是前驱;Rtag同理
c. 指向前驱和后继的指针叫做线索。按照某种次序遍历,加上线索的二叉树称之为线索二叉树
3. 树、森林
(1) 树的存储结构
a. 只存父节点
b. 邻接表存储所有子节点
c. 左儿子右兄弟
(2) 森林F与二叉树T的转换
a. 原树中叶子节点数 = 转换后的树中有右儿子的节点数 + 1
b. F的前序遍历就是T的前序遍历
c. F的后序遍历就是T的中序遍历
(3) 树和森林的遍历
a. 前序遍历
b. 后序遍历
4. 考题:2011-4、2011-5、2011-6、2012-3、2013-5、2014-4、2014-5、2014-41、2015-2、2016-5、2016-42、2017-4、2017-5、2018-4、2019-2、2020-3、2020-4
5. 押题:AcWing 19