数据结构(6.3_2)——图的深度优先遍历

树的深度优先遍历

树的深度优先遍历分为先根遍历和后根遍历。

图的深度优先遍历

代码(只能遍历连通图)

cpp 复制代码
//深度优先遍历
void DFS(Graph G, int v) {//从顶点v出发,深度优先遍历图G
    visit(v);//访问初始顶点v
    visited[v] = true;//对v做已访问标记
    for (w = FirsitNeighbor(G, v); w >= 0; w = NextNeighbor(G, v, w);)
        //检查v所有邻接点
        if (!visited[w]) {//w为v的尚未访问的邻接点
            DFS(G, w);
        }
}

DFS算法(Final版)

代码

cs 复制代码
void DFSTraverse(Graph G) {//对图G进行深度优先遍历
    for (int v = 0; v < G.vexnum; ++v)
        visited[v] = false;//访问标记数组初始化
    for (int v = 0; v < G.vexnum; ++v)//从0号顶点开始遍历
        if (!visited[v])//对每个连通分量调用一次BFS
            DFS(G, v);//vi未访问过,从vi开始BFS

}
//深度优先遍历
void DFS(Graph G, int v) {//从顶点v出发,深度优先遍历图G
    visit(v);//访问初始顶点v
    visited[v] = true;//对v做已访问标记
    for (w = FirsitNeighbor(G, v); w >= 0; w = NextNeighbor(G, v, w);)
        //检查v所有邻接点
        if (!visited[w]) {//w为v的尚未访问的邻接点
            DFS(G, w);
        }
}

复杂度分析

空间复杂度

时间复杂度

深度优先遍历练习

深度优先生成树

深度优先生成森林

图的遍历和图的连通性

无向图

有向图

总结:

相关推荐
念越2 小时前
题库、练习与错题本代码阅读
开发语言·数据结构
垆边人似月.2 小时前
华为题:盛最多水的容器
数据结构·算法
HPtiger2 小时前
数据结构——插入排序
数据结构·排序算法
All for pursuit.3 小时前
【动态规划-11】279.完全平方数
数据结构·c++·算法·leetcode·动态规划
Logic1014 小时前
C语言/数据结构位运算题解:异或XOR找出套碗游戏中的“幸运碗“——只出现一次的数字
c语言·数据结构·算法·数组·位运算·时间复杂度·空间复杂度
y1su4 小时前
Leetcode 单调栈模板
java·开发语言·数据结构·算法·leetcode
一只旭宝4 小时前
树的家族全景:从二叉树到 B+ 树
数据结构
垆边人似月.5 小时前
华为题:每日温度
数据结构·c++·算法
Peregrine95 小时前
数据结构 - > 树和二叉树
数据结构·算法
j7~5 小时前
【算法】专题四.前缀和:一维二维模板,配套 LeetCode 真题,结合同余定理、哈希前缀和,搞定子数组与子矩阵区间求和问题。
数据结构·c++·算法·前缀和·优选算法