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

复杂度分析

空间复杂度

时间复杂度

深度优先遍历练习

深度优先生成树

深度优先生成森林

图的遍历和图的连通性

无向图

有向图

总结:

相关推荐
小蜗的房子24 分钟前
MySQL学习之SQL语法与操作
数据结构·数据库·经验分享·sql·mysql·学习方法·数据库开发
zyq99101_135 分钟前
树与二叉树的奥秘全解析
c语言·数据结构·学习·1024程序员节
风筝在晴天搁浅36 分钟前
代码随想录 617.合并二叉树
数据结构·算法
AICodeThunder1 小时前
【S组篇】C++知识点总结(1):并查集基础
c语言·数据结构·c++·算法·图论
Code_Shark2 小时前
AtCoder Beginner Contest 424 题解
数据结构·c++·算法·数学建模·青少年编程
CS创新实验室2 小时前
深入解析快速排序(Quicksort):从原理到实践
数据结构·算法·排序算法·快速排序
yeshihouhou3 小时前
树 B树和B+树
数据结构
大数据张老师3 小时前
数据结构——B+树的基本概念
数据结构·1024程序员节
草莓工作室3 小时前
数据结构12:二叉树的API及其实现
c语言·数据结构·二叉树
Yupureki6 小时前
从零开始的C++学习生活 12:AVL树全面解析
c语言·数据结构·c++·学习·visual studio