zoukankan      html  css  js  c++  java
  • 图的遍历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

    深度优先生成树

    深度优先生成森林

    图的遍历与图的连通性

  • 相关阅读:
    kubectl 命令详解
    codeforce344 C report
    poj3041 建图+最小顶点覆盖(最大匹配数)
    poj1637 混合欧拉回路的判定
    poj1149 最大流好题 难在建图 好题
    targan 算法模板
    poj2186 强连通分量 targan算法的应用
    poj2723 2分 + 2-sat
    poj3061 尺取法
    poj3207 2-sat基础题
  • 原文地址:https://www.cnblogs.com/jev-0987/p/13213434.html
Copyright © 2011-2022 走看看