美文网首页
图的遍历(无向数组版)

图的遍历(无向数组版)

作者: laochonger | 来源:发表于2018-03-07 10:00 被阅读0次
无标题.png 捕获.PNG

如图用数组保存该无向图,输入时需要输入双向。与之前的dfs不同,单纯地遍历该图不需要找到最短路,也就不需要恢复标记
用数组保存图,数组中1表示可以连通,max表示不能,0表示本身
dfs:

book[1] = 1; //这一步很重要,否则会发生循环
void dfs(int cur){//cur是当前所在点
    pritnf("%d", cur);//打印该点
    sum++;
    if(sum == n) return ;
    for(int i = 1; i <- n; i++){
        if(e[cur][i] == 1 && book[i] == 0){
            book[i] = 1;//标记i而非e[cur][i]  标记i后不会再走回e[i][x],因为每个元素只需遍历到一次,若用二维数组则需标记正反 i x , x i, 且会发生重复遍历,比如3-->2-->4-->3
            dfs(i); 
        }
    }
    return ;
}
遍历的顺序: 1 2 3 5 4(因为4是2的枝节,需要回溯后才能遍历到)
bfs:
void bfs(){
    queue<int>q;
    q.push(1);
    book[1] = 1;
    while(!q.empty()){
        for(int i = 1; i <= n; i++){
            if(e[q.front()][i] == 1 && book[i] == 0){
                q.push(i);
                sum++;
                book[i];
            }
        }
        if(sum == n) break;
        q.pop(); //一般将出队放在最后
    }
}
遍历的顺序: 1 2 3 5 4

相关文章

  • 图的遍历(无向数组版)

    如图用数组保存该无向图,输入时需要输入双向。与之前的dfs不同,单纯地遍历该图不需要找到最短路,也就不需要恢复标记...

  • 哈夫曼实现 图:十字链表,邻接多重链表,邻接表(无向),邻接表

    图的遍历: 无论是广度优先,还是深度优先都是以箭头方向右边的优先遍历; 广度优先遍历(无向图): 深度优先(无向图...

  • 10.图的深度优先遍历、联通分量与寻路

    图的深度优先遍历、联通分量与寻路 点击这里,前提知晓... 深度优先遍历对有向图和无向图都可以使用 一、图的深度优...

  • 软考-算法-查找(上)

    1.1:对有n个结点、e条边且采用数组表示法(即邻接矩阵存储)的无向图进行深度优先遍历,时间复杂度_____。A ...

  • 数据结构-学习二

    图: 无向图,有向图度,子图,路径,环,连通图,连通子图。 存储: 邻接矩阵二维数组。 邻接表+数组加链表优先搜...

  • 面试准备之【数据结构】1——图

    一. 有向图/无向图 共有:邻接表,邻接矩阵 有向图独有:十字链表,边集数组 无向图独有:邻接多重表 1.邻接矩...

  • 数组中的方法

    放一张网上的神图 可以遍历数组的方法 forEach 遍历数组,使数组的每一个元素调用指定函数 map 遍历数组,...

  • es6操作数组

    1、forEach() //遍历数组,无返回值,不改变原数组2、map() //遍历数组,返回一个新数组,不改...

  • 深度优先遍历

    问题描述 按照给定的起始顶点深度优先遍历给定的无向图,尝试所有可能的遍历方式,打印遍历过程中出现的最大深度。 输入...

  • 图和遍历

    邻接矩阵定义一个图 其实就是二维数组来定义 图的遍历 深度搜索遍历 2.广度搜索遍历 遍历

网友评论

      本文标题:图的遍历(无向数组版)

      本文链接:https://www.haomeiwen.com/subject/ieerfftx.html