数据结构(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);
        }
}

复杂度分析

空间复杂度

时间复杂度

深度优先遍历练习

深度优先生成树

深度优先生成森林

图的遍历和图的连通性

无向图

有向图

总结:

相关推荐
阿方.91822 分钟前
《数据结构全解析:栈(数组实现)》
java·开发语言·数据结构
小欣加油1 小时前
leetcode 912 排序数组(归并排序)
数据结构·c++·算法·leetcode·排序算法
zl_dfq2 小时前
数据结构 之 【模拟实现哈希表】
数据结构
苏小瀚10 小时前
[数据结构] ArrayList(顺序表)与LinkedList(链表)
数据结构
Kevinhbr14 小时前
CSP-J/S IS COMING
数据结构·c++·算法
Armyyyyy丶14 小时前
Redis底层实现原理之五大基础结构
数据结构·redis·缓存
金古圣人15 小时前
hot100 滑动窗口
数据结构·c++·算法·leetcode·哈希算法
JJJJ_iii15 小时前
【左程云算法03】对数器&算法和数据结构大致分类
数据结构·算法·分类
天选之女wow19 小时前
【代码随想录算法训练营——Day4】链表——24.两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07.链表相交、142.环形链表II
数据结构·算法·leetcode·链表
胡萝卜3.019 小时前
数据结构初阶:树的相关性质总结
数据结构·二叉树·性质·二叉树的性质