diff --git a/content/408/《数据结构》图.md b/content/408/《数据结构》图.md
new file mode 100644
index 0000000..e75028a
--- /dev/null
+++ b/content/408/《数据结构》图.md
@@ -0,0 +1,324 @@
+---
+title: "《数据结构》图"
+date: 2023-08-01T11:26:56+08:00
+
+---
+
+## 概念
+
+### 基本概念
+
+* 定义
+ * 图 = 顶点 + 边
+* 表示
+ * 图G记为G=(V,E)
+* 注意
+ * 线性表有空表,树有空树,但图没有空图
+ * 图的顶点集V一定非空,但边集E可以为空
+ * |V|表图G中顶点的个数,也称图G的阶
+ * |E|表图G中边的个数
+* 示例
+ * G = (V,E)
+ * V = {1,2,3,4,5,6}
+ * E = {(1,2),(2,3),(3,4),(4,5),(1,5),(5,6),(2,6),(3,6)}
+ * ![](../../images/《数据结构》图/无向图实例.png)
+
+### 常考结论
+
+* 无向图边数*2 = 各顶点度数之和
+* 有向图边数 = 各顶点的入度之和 = 各顶点的出度之和
+* 一个连通图的生成树是一个极小连通子图,是无环的
+* 完全无向图:边数$\frac{n(n-1)}{2}$
+* 完全有向图:边数为$n(n-1)$
+* 对于一个有n个顶点的图G
+ * 若是连通无向图,其边的个数至少为n-1(边最少即构成一棵树的情形)
+ * 若是强连通有向图,其边的个数至少是n(边最少即构成一个有向环的情形)
+* 对n个顶点的无向图G
+ * 所有顶点度之和 = 2|E|
+ * 若G为连通图,则至少有n-1条边(树)
+ * 若|E|>n-1,则一定有回路
+ * 若G是非连通图,则最多可能有$C^2_{n-1}$条边
+ * 无向完全图有$C^2_n$
+* 对n个顶点的有向图G
+ * 所有顶点的出度之和 = 入度之和 = |E|
+ * 所有顶点的度之和 = 2|E|
+ * 若G为强连通图,则最少有n条边(形成回路)
+ * 有向完全图共有$2C^2_n$条边
+
+### 常见术语
+
+* 无向图
+ * 全部由无向边构成的图
+ * ![](../../images/《数据结构》图/无向图.png)
+* 有向图
+ * 全部由有向边构成的图
+ * ![](../../images/《数据结构》图/有向图.png)
+* 简单图、多重图
+ * 简单图:不存在重复边,不存在顶点到自身的边
+ * 多重图:两个顶点之间的边数大于1
+* 完全图(简单完全图)
+ * 完全无向图:边数$\frac{n(n-1)}{2}$
+ * 完全有向图:边数为$n(n-1)$
+ * ![](../../images/《数据结构》图/完全无向图.png)
+ * ![](../../images/《数据结构》图/完全有向图.png)
+* 子图、生成子图
+ * G的子图:所有顶点和边
+ * G的生成子图:含有G的所有顶点
+ * ![](../../images/《数据结构》图/生成子图.png)
+* 连通、连通图、连通分量【无向图】
+ * V和W连通:无向图中,V到W的路径存在
+ * 连通图:图中任意两个顶点都是连通的
+ * 连通分量:无向图中的极大连通子图
+* 强连通图,强连通分量【有向图】
+ * V和W连通:有向图中,从到W和从W到V都有路径
+ * 强连通图:图中任何一个一对顶点都是强连通的
+ * 强连通分量:有向图中的极大连通子图
+* 生成树,生成森林
+ * 顶点的度Degree:图中与该顶点相关联边的数目
+ * 入度:指向该顶点的边的数目
+ * 出度:从该顶点出去的边的数目
+ * 顶点的度 = 出度 + 入度
+ * 对于具有n个顶点,e条边的有向图,出度和 = 入度和 = e对于具有n个顶点,e条边的无向图,度和 = 2e
+ * ![](../../images/《数据结构》图/顶点的度.png)
+* 边的权和网
+ * 权Weight:边上的数值
+ * 网Network:边上标识权的图
+ * ![](../../images/《数据结构》图/边的权和网.png)
+* 稠密图,稀疏图
+ * 稠密图:边多
+ * 稀疏图:边少
+ * ![](../../images/《数据结构》图/稠密图.png)
+* 路径、路径长度和回路
+ * 路径Path:在一个图中,路径是从顶点u到顶点v所经过的顶点序列
+ * 路径长度:该路径上边的数目
+ * 回路:第一个顶点和最后一个顶点相同的路径
+* 简单路径,简单回路
+ * 简单路径:顶点不重复出现的路径
+ * 简单回路:除第一个和最后一个顶点,其余顶点不重复出现的回路
+* 距离
+ * 从u到v的距离:从u到V的最短路径长度
+* 有向树:一个顶点的入度为0,其余顶点的入度均为1的有向图
+
+## 图的存储和基本操作
+
+### 常考结论
+
+* 求有向图节点的入度,必须遍历整个邻接表
+* 有向图邻接表中,删除某个顶点的所有边的时间复杂度 = O(n+e)
+* 一个图的邻接矩阵表示唯一,邻接表表示不唯一
+
+### 图的存储方式
+
+* 邻接矩阵
+ * 用两个数组来表示图
+ * 一个一位数组存储图中顶点信息
+ * 一个二维数组存储图中的边或弧的信息
+ * ![](../../images/《数据结构》图/邻接矩阵.jpg)
+* 邻接表
+ * 邻接表是由两部分组成
+ * 顶点用一个一维数组存储
+ * 每个顶点的所有邻接点构成一个线性表
+ * 由于邻接点的个数不定,所以用单链表存储
+ * 无向图称为顶点Vi的边表
+ * 有向图则称为顶点Vi作为弧边的出边表
+ * ![](../../images/《数据结构》图/邻接表.jpg)
+* 十字链表【针对有向图】
+ * 把邻接表和逆邻接表整合在了一起
+ * 既容易找到以Vi为尾的弧,也容易找到以Vi为头的弧
+ * 容易求得顶点的出度和入度
+ * 创建图算法的时间复杂度和邻接表相同
+ * ![](../../images/《数据结构》图/十字链表.jpg)
+* 邻接多重表【针对无向图】
+ * 仿照十字链表的方式,对边表结点的结构进行一些改造
+ * 同一条边在邻接表中用两个结点表示,而在邻接多重表中只有一个结点
+ * ![](../../images/《数据结构》图/邻接多重表.jpg)
+
+### 图的基本操作
+
+|函数|功能|无向邻接矩阵时间复杂度|有向邻接矩阵时间复杂度|无向邻接表时间复杂度|有向邻接表时间复杂度|
+|---|---|---|---|---|---|
+|Adjacent(G,x,y)|判断是否存在边|O(1)|O(1)~O(N)|O(1)|O(1)~O(N)
+|Neighbors(G,x)|列出图中与结点x邻接的边|O(V)|O(1)~O(V)|O(V)|出边:O(1)~O(V)
入边:O(E)|
+|InsertVertex(G,x)|在图中插入顶点x|O(1)|O(1)|O(1)|O(1)|
+|DeleteVertex(G,x)|在图中删除顶点x|O(V)|O(V)|O(1)~O(E)|出边:O(1)~O(V)
入边:O(E)|
+|AddEdge(G,x,y)|若无向边或有向边不存在,则向图中添加该边|O(1)|O(1)|O(1)|O(1)|
+|RemoveEdge(G,x,y)|若无向边或有向边存在,则向图中删除该边|O(1)~O(V)|O(1)~O(V)|O(1)|出边:O(1)
入边:O(1)~O(E)|
+|NextNeighbor(G,x,y)|假设图中顶点y是顶点x的一个邻接点
返回除y外的顶点x的下一个邻接点的顶点号
若y是x的最后一个邻接点,则返回1|O(1)~O(V)|O(1)~O(V)|O(1)||
+|Get_Edge_Value(G,x,y)|获取图中对应的权值|O(1)|O(1)|O(1)~O(V)||
+|Set_Edge_Value(G,x,y,v)|设置图中边对应的权值|O(1)|O(1)|O(1)~O(V)||
+
+## 图的遍历
+
+### 深度优先搜索DFS
+
+* 相当于树的先序遍历
+* 根节点就是任意出发的节点
+* 子节点就是所有邻近的未访问的节点
+* 时间复杂度【N为顶点】【E为边】
+ * 邻接表存储
+ * O(N + E)
+ * 邻接矩阵存储
+ * O($N^2$)
+* 空间复杂度
+ * 最好情况:O(1)
+ * 最坏情况:O(n)
+* 遍历过程
+ * ![](../../images/《数据结构》图/DFS遍历过程.jpg)
+* 生成树
+ * ![](../../images/《数据结构》图/DFS生成树.jpg)
+* 生成森林
+ * ![](../../images/《数据结构》图/DFS生成森林.jpg)
+
+### 广度优先搜索BFS
+
+* 相当于树的层序遍历
+* 时间复杂度【N为顶点】【E为边】
+ * 邻接表存储
+ * O(N + E)
+ * 邻接矩阵存储
+ * O($N^2$)
+* 空间复杂度
+ * O(n)
+* 遍历过程
+ * ![](../../images/《数据结构》图/BFS遍历过程.jpg)
+* 生成树
+ * ![](../../images/《数据结构》图/BFS生成树.jpg)
+* 生成森林
+ * ![](../../images/《数据结构》图/BFS生成森林.jpg)
+
+### 遍历次数
+
+* 无向图
+ * 调用BFS/DFS次数 = 连通分量数
+ * 对于连通图,只需要调用1次BFS/DFS
+* 有向图
+ * 调用BFS/DFS次数依情况分析
+ * 起始顶点到其他各顶点都有路径,只需要调用1次BFS/DFS
+ * 对于强连通图,从任一结点出发都只需要调用1次BFS/DFS
+
+## 图的应用
+
+### 常考结论
+
+* 最短路径一定是简单路径
+* 求最短路径是允许图有环的
+* 一个有向图的定点不能排列成一个拓扑序列,表明其中存在一个顶点数目大于1的回路,该回路构成一个强连通分量
+* 若有向无环图的拓扑序列唯一,不能唯一确定该图
+
+### 最小生成树
+
+* 定义:图G的所有生成树中边的权值之和最小的树
+* 性质
+ * 最小生成树并不是唯一的
+ * 当图G的各边权值不相等时,最小生成树是唯一的
+ * 当G本身就是一棵树时,其最小生成树就是它本身
+ * 最小生成树的边的权值之和总是唯一的
+ * 最小生成树的边数 = 顶点数-1
+* 算法1:Prim算法
+ * 类似于寻找图的最短路径的Dijkstra算法【以自我为中心】
+ * 当带权连通图的任意一个环中所包含的边权值不同时,最小生成树是唯一的
+ * ![](../../images/《数据结构》图/Prim算法.jpg)
+* 算法2:Kruskal算法
+ * 按权值的递增次序选择合适的边来构造最小生成树【不以自我为中心】
+ * ![](../../images/《数据结构》图/Kruskal算法.jpg)
+
+### 最短路径
+
+* BFS
+ * 求无权图的单源最短路径问题
+ * ![](../../images/《数据结构》图/求无权图的单源最短路径问题.jpg)
+* Dijkstra
+ * 求有向图的单源最短路径问题
+ * ![](../../images/《数据结构》图/求有向图的单源最短路径问题.jpg)
+* Floyd算法
+ * 求任意两顶点的最短路径
+ * ![](../../images/《数据结构》图/求任意两顶点间的最短路径.jpg)
+
+### 有向无环图描述表达式
+
+* 有向无环图定义
+ * 若一个有向图中不存在环,则称为有向无环图,简称DAG图
+ * 利用有向无环图描述表达式【顶点中不能出现重复操作数】
+ * ![](../../images/《数据结构》图/利用有向无环图描述表达式.jpg)
+
+### 拓扑排序(优先入度为0)
+
+* 核心算法
+ * ![](../../images/《数据结构》图/拓扑排序.jpg)
+* 时间复杂度
+ * 采用邻接矩阵存储,时间复杂度为$O(|V|^2)$
+ * 采用邻接表存储,时间复杂度为O(|V|+|E|)
+
+### 逆拓扑排序(优先出度为0)
+
+* 核心算法
+ * ![](../../images/《数据结构》图/逆拓扑排序.jpg)
+
+### 关键路径
+
+* 常考点
+ * 计算最早开始时间和最晚开始时间
+ * 关键路径是指权值之和最大而非边数最多的路径
+ * 无论存在一条或多条关键路径,增加任一关键活动的时间都会延长工程的工期
+ * 只有一条关键路径的时候,减少关键活动的时间会缩短工程的工期
+ * 有多条关键路径的时候,减少关键活动的时间不一定会缩短工程的工期
+ * 求关键路径的快速方法:找起点到终点的最长路径
+* AOE网
+ * ![](../../images/《数据结构》图/AOE网.jpg)
+* 计算过程
+
+![](../../images/《数据结构》图/计算过程.jpg)
+
+1. 求所有事件的最早发生事件Ve()
+
+Ve(源点) = 0
+ve(k) = max{Ve(i)+Weight(Vj,Vk)}
+
+拓扑排序:V1,V3,V2,V5,V4,V6
+
+Ve(1)=0,Ve(3)=2,Ve(2)=3,Ve(5)=6
+
+Ve(4) = max{Ve(2)+2,Ve(3)+4} = 6
+
+Ve(6) = max{Ve(5)+1,Ve(4)+2,Ve(3)+3} = 8
+
+2. 求所有事件的最迟发生时间Vl()
+
+Vl(汇点) = Ve(汇点)
+
+Vl(k) = Min{Vl(j)-Weight(Vk,Vj)}
+
+逆拓扑排序:V6,V5,V4,V2,V3,V1
+
+Vl(6)=8,Vl(5)=7,Vl(4)=6
+
+Vl(2) = min{Vl(5)-3,Vl(4)-2} = 4
+
+Vl(3) = min{Vl(4)-4,Vl(6)-3} = 2
+
+Vl(1) =0
+
+||V1|V2|V3|V4|V5|V6|
+|---|---|---|---|---|---|---|
+|Ve(k)|0|3|2|6|6|8|
+|Vl(k)|0|4|2|6|7|8|
+
+||a1|a2|a3|a4|a5|a6|a7|a8|
+|---|---|---|---|---|---|---|---|---|
+|e(i)|0|0|3|3|2|2|6|6|
+|l(i)|1|0|4|4|2|5|6|7|
+|l(i)-e(i)|1|0|1|1|0|3|0|1
+
+3. 求所有活动的最早发生时间e()
+
+若表示活动$a_i$,则有e(i) = Ve(k)
+
+4. 求所有活动的最迟发生时间l()
+
+若表示活动$a_i$,则有l(i) = vl(j) - Weight(Vk,Vj)
+
+5. 求所有活动的时间余量d()
+
+d(i) = l(i) - e(i)
+
+此时,根据l(i)-e(i)=0的关键活动,得出关键路径为(V1,V3,V4,V6)
\ No newline at end of file
diff --git a/content/408/《数据结构》树与二叉树.md b/content/408/《数据结构》树与二叉树.md
index 8fe0900..b855c19 100644
--- a/content/408/《数据结构》树与二叉树.md
+++ b/content/408/《数据结构》树与二叉树.md
@@ -9,7 +9,7 @@ date: 2023-07-31T14:08:42+08:00
### 树的基本概念
* 定义
- * 树时一种数据结构,它是由n个有限节点组成一个具有层次关系的集合
+ * 树是一种数据结构,它是由n个有限节点组成一个具有层次关系的集合
* 特点
* 每个节点有零个或多个子节点
* 没有父节点的节点称为根节点
diff --git a/static/images/《数据结构》图/AOE网.jpg b/static/images/《数据结构》图/AOE网.jpg
new file mode 100644
index 0000000..c6067f9
Binary files /dev/null and b/static/images/《数据结构》图/AOE网.jpg differ
diff --git a/static/images/《数据结构》图/BFS生成树.jpg b/static/images/《数据结构》图/BFS生成树.jpg
new file mode 100644
index 0000000..655c6e8
Binary files /dev/null and b/static/images/《数据结构》图/BFS生成树.jpg differ
diff --git a/static/images/《数据结构》图/BFS生成森林.jpg b/static/images/《数据结构》图/BFS生成森林.jpg
new file mode 100644
index 0000000..c8caa94
Binary files /dev/null and b/static/images/《数据结构》图/BFS生成森林.jpg differ
diff --git a/static/images/《数据结构》图/BFS遍历过程.jpg b/static/images/《数据结构》图/BFS遍历过程.jpg
new file mode 100644
index 0000000..16dd278
Binary files /dev/null and b/static/images/《数据结构》图/BFS遍历过程.jpg differ
diff --git a/static/images/《数据结构》图/DFS生成树.jpg b/static/images/《数据结构》图/DFS生成树.jpg
new file mode 100644
index 0000000..ef5c55f
Binary files /dev/null and b/static/images/《数据结构》图/DFS生成树.jpg differ
diff --git a/static/images/《数据结构》图/DFS生成森林.jpg b/static/images/《数据结构》图/DFS生成森林.jpg
new file mode 100644
index 0000000..ec06b2a
Binary files /dev/null and b/static/images/《数据结构》图/DFS生成森林.jpg differ
diff --git a/static/images/《数据结构》图/DFS遍历过程.jpg b/static/images/《数据结构》图/DFS遍历过程.jpg
new file mode 100644
index 0000000..bb64a8b
Binary files /dev/null and b/static/images/《数据结构》图/DFS遍历过程.jpg differ
diff --git a/static/images/《数据结构》图/Kruskal算法.jpg b/static/images/《数据结构》图/Kruskal算法.jpg
new file mode 100644
index 0000000..176992e
Binary files /dev/null and b/static/images/《数据结构》图/Kruskal算法.jpg differ
diff --git a/static/images/《数据结构》图/Prim算法.jpg b/static/images/《数据结构》图/Prim算法.jpg
new file mode 100644
index 0000000..fc59bd9
Binary files /dev/null and b/static/images/《数据结构》图/Prim算法.jpg differ
diff --git a/static/images/《数据结构》图/利用有向无环图描述表达式.jpg b/static/images/《数据结构》图/利用有向无环图描述表达式.jpg
new file mode 100644
index 0000000..f5fa16b
Binary files /dev/null and b/static/images/《数据结构》图/利用有向无环图描述表达式.jpg differ
diff --git a/static/images/《数据结构》图/十字链表.jpg b/static/images/《数据结构》图/十字链表.jpg
new file mode 100644
index 0000000..837fdf9
Binary files /dev/null and b/static/images/《数据结构》图/十字链表.jpg differ
diff --git a/static/images/《数据结构》图/完全无向图.png b/static/images/《数据结构》图/完全无向图.png
new file mode 100644
index 0000000..243fe52
Binary files /dev/null and b/static/images/《数据结构》图/完全无向图.png differ
diff --git a/static/images/《数据结构》图/完全有向图.png b/static/images/《数据结构》图/完全有向图.png
new file mode 100644
index 0000000..5baf530
Binary files /dev/null and b/static/images/《数据结构》图/完全有向图.png differ
diff --git a/static/images/《数据结构》图/拓扑排序.jpg b/static/images/《数据结构》图/拓扑排序.jpg
new file mode 100644
index 0000000..4ec4a51
Binary files /dev/null and b/static/images/《数据结构》图/拓扑排序.jpg differ
diff --git a/static/images/《数据结构》图/无向图.png b/static/images/《数据结构》图/无向图.png
new file mode 100644
index 0000000..bc6791c
Binary files /dev/null and b/static/images/《数据结构》图/无向图.png differ
diff --git a/static/images/《数据结构》图/无向图实例.png b/static/images/《数据结构》图/无向图实例.png
new file mode 100644
index 0000000..d65ca44
Binary files /dev/null and b/static/images/《数据结构》图/无向图实例.png differ
diff --git a/static/images/《数据结构》图/有向图.png b/static/images/《数据结构》图/有向图.png
new file mode 100644
index 0000000..230a88f
Binary files /dev/null and b/static/images/《数据结构》图/有向图.png differ
diff --git a/static/images/《数据结构》图/求任意两顶点间的最短路径.jpg b/static/images/《数据结构》图/求任意两顶点间的最短路径.jpg
new file mode 100644
index 0000000..f73d82b
Binary files /dev/null and b/static/images/《数据结构》图/求任意两顶点间的最短路径.jpg differ
diff --git a/static/images/《数据结构》图/求无权图的单源最短路径问题.jpg b/static/images/《数据结构》图/求无权图的单源最短路径问题.jpg
new file mode 100644
index 0000000..034b72b
Binary files /dev/null and b/static/images/《数据结构》图/求无权图的单源最短路径问题.jpg differ
diff --git a/static/images/《数据结构》图/求有向图的单源最短路径问题.jpg b/static/images/《数据结构》图/求有向图的单源最短路径问题.jpg
new file mode 100644
index 0000000..6107f20
Binary files /dev/null and b/static/images/《数据结构》图/求有向图的单源最短路径问题.jpg differ
diff --git a/static/images/《数据结构》图/生成子图.png b/static/images/《数据结构》图/生成子图.png
new file mode 100644
index 0000000..d867a1f
Binary files /dev/null and b/static/images/《数据结构》图/生成子图.png differ
diff --git a/static/images/《数据结构》图/稠密图.png b/static/images/《数据结构》图/稠密图.png
new file mode 100644
index 0000000..169a730
Binary files /dev/null and b/static/images/《数据结构》图/稠密图.png differ
diff --git a/static/images/《数据结构》图/计算过程.jpg b/static/images/《数据结构》图/计算过程.jpg
new file mode 100644
index 0000000..8a47d63
Binary files /dev/null and b/static/images/《数据结构》图/计算过程.jpg differ
diff --git a/static/images/《数据结构》图/边的权和网.png b/static/images/《数据结构》图/边的权和网.png
new file mode 100644
index 0000000..e8bcfa5
Binary files /dev/null and b/static/images/《数据结构》图/边的权和网.png differ
diff --git a/static/images/《数据结构》图/逆拓扑排序.jpg b/static/images/《数据结构》图/逆拓扑排序.jpg
new file mode 100644
index 0000000..70e5a0f
Binary files /dev/null and b/static/images/《数据结构》图/逆拓扑排序.jpg differ
diff --git a/static/images/《数据结构》图/邻接多重表.jpg b/static/images/《数据结构》图/邻接多重表.jpg
new file mode 100644
index 0000000..3b3470c
Binary files /dev/null and b/static/images/《数据结构》图/邻接多重表.jpg differ
diff --git a/static/images/《数据结构》图/邻接矩阵.jpg b/static/images/《数据结构》图/邻接矩阵.jpg
new file mode 100644
index 0000000..a32f464
Binary files /dev/null and b/static/images/《数据结构》图/邻接矩阵.jpg differ
diff --git a/static/images/《数据结构》图/邻接表.jpg b/static/images/《数据结构》图/邻接表.jpg
new file mode 100644
index 0000000..3d57185
Binary files /dev/null and b/static/images/《数据结构》图/邻接表.jpg differ
diff --git a/static/images/《数据结构》图/顶点的度.png b/static/images/《数据结构》图/顶点的度.png
new file mode 100644
index 0000000..4fa0082
Binary files /dev/null and b/static/images/《数据结构》图/顶点的度.png differ