mirror of
https://github.com/krahets/hello-algo.git
synced 2026-08-12 20:00:58 +00:00
build
This commit is contained in:
@@ -20,7 +20,7 @@ comments: true
|
||||
|
||||
<p align="center"> 图:图的广度优先遍历 </p>
|
||||
|
||||
### 算法实现
|
||||
### 1. 算法实现
|
||||
|
||||
BFS 通常借助「队列」来实现。队列具有“先入先出”的性质,这与 BFS 的“由近及远”的思想异曲同工。
|
||||
|
||||
@@ -433,7 +433,7 @@ BFS 通常借助「队列」来实现。队列具有“先入先出”的性质
|
||||
|
||||
不唯一。广度优先遍历只要求按“由近及远”的顺序遍历,**而多个相同距离的顶点的遍历顺序是允许被任意打乱的**。以上图为例,顶点 $1$ , $3$ 的访问顺序可以交换、顶点 $2$ , $4$ , $6$ 的访问顺序也可以任意交换。
|
||||
|
||||
### 复杂度分析
|
||||
### 2. 复杂度分析
|
||||
|
||||
**时间复杂度:** 所有顶点都会入队并出队一次,使用 $O(|V|)$ 时间;在遍历邻接顶点的过程中,由于是无向图,因此所有边都会被访问 $2$ 次,使用 $O(2|E|)$ 时间;总体使用 $O(|V| + |E|)$ 时间。
|
||||
|
||||
@@ -447,7 +447,7 @@ BFS 通常借助「队列」来实现。队列具有“先入先出”的性质
|
||||
|
||||
<p align="center"> 图:图的深度优先遍历 </p>
|
||||
|
||||
### 算法实现
|
||||
### 1. 算法实现
|
||||
|
||||
这种“走到尽头 + 回溯”的算法形式通常基于递归来实现。与 BFS 类似,在 DFS 中我们也需要借助一个哈希表 `visited` 来记录已被访问的顶点,以避免重复访问顶点。
|
||||
|
||||
@@ -845,7 +845,7 @@ BFS 通常借助「队列」来实现。队列具有“先入先出”的性质
|
||||
|
||||
以树的遍历为例,“根 $\rightarrow$ 左 $\rightarrow$ 右”、“左 $\rightarrow$ 根 $\rightarrow$ 右”、“左 $\rightarrow$ 右 $\rightarrow$ 根”分别对应前序、中序、后序遍历,它们展示了三种不同的遍历优先级,然而这三者都属于深度优先遍历。
|
||||
|
||||
### 复杂度分析
|
||||
### 2. 复杂度分析
|
||||
|
||||
**时间复杂度:** 所有顶点都会被访问 $1$ 次,使用 $O(|V|)$ 时间;所有边都会被访问 $2$ 次,使用 $O(2|E|)$ 时间;总体使用 $O(|V| + |E|)$ 时间。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user