图的遍历DFS

Posted jev-0987

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图的遍历DFS相关的知识,希望对你有一定的参考价值。

图的遍历DFS

技术图片

与树的深度优先遍历之间的联系

树的深度优先遍历分为:先根,后根

//树的先根遍历
void PreOrder(TreeNode *R){
    if(R!=NULL){
        visit(R);				//访问根节点
        while(R还有下一个子树T)
            PreOrder(T);		//先根遍历下一棵子树
    }
}

技术图片

新找到的相邻结点一定是没有访问过的。

先根遍历序列:1,2,5,6,3,4,7,8

图的深度优先遍历

bool visited[MAX_VERTEX_NUM];	//初始值都为false

void DFSTraverse(Graph G){		//对图G进行深度优先遍历
    for(v=0;v<G.vexnum;++v)
        visited[v]=FASLSE;		//初始化已访问标记数据
    for(v=0;v<G.vexnum;++v)		//本代码中是从v=0开始遍历
        if(!visited[v])
            DFS(G,v);
}


void DFS(Graph G,int v){		//从顶点v出发,深度优先遍历图G
    visit(v);					//访问顶点v
    visited[v] = TURE;			//设已访问标记
    for(w=FirstNeighbor(G,v);w>=0;w=NextNeighor(G,v,w))
        if(!visited[w]){		//w为u的尚未访问的邻接顶点
            DFS(G,w);
        }
}

技术图片

技术图片

复杂度分析

技术图片

技术图片

深度优先遍历序列

技术图片

从1开始出发:12634785

邻接表不同得到的序列也不同:

技术图片

从3出发:36215784

从1出发:12678435

深度优先生成树

技术图片

技术图片

深度优先生成森林

技术图片

技术图片

图的遍历与图的连通性

技术图片

技术图片

技术图片

以上是关于图的遍历DFS的主要内容,如果未能解决你的问题,请参考以下文章

图的遍历 | 1131地铁图: dfs复杂模拟题

图的深度优先遍历(DFS)—递归算法

Day10 图的深度优先遍历

P3916 图的遍历 反向建图+DFS

图的遍历方法——DFS和BFS

图的遍历DFS