美文网首页
图的遍历DFS和BFS实现

图的遍历DFS和BFS实现

作者: 神棄丶Aria | 来源:发表于2017-09-08 16:09 被阅读0次

一、原文

http://blog.csdn.net/qq_24486393/article/details/50270481

二、初始数据

import java.util.LinkedList;
import java.util.Queue;

public class Graph {

    private int number =7;
    private boolean[] flag;
    private String[] vetexs = {"A","B","C","D","E","F","G"};
    private int[][] edge = {
            { 1, 1, 1, 1, 0, 0,0},
            { 0, 1, 0, 0, 1, 1,0},
            { 0, 0, 1, 0, 1, 0,0},
            { 0, 0, 0, 1, 0, 1,0},
            { 0, 0, 0, 0, 1, 0,0},
            { 0, 0, 0, 0, 0, 1,0},
            { 0, 0, 0, 0, 0, 0,1}
    };
}

三、DFS递归遍历
每当找到一个点可到达时,就继续通过该点往下遍历

   //DFS递归
    void DFSTraverse(){
        flag = new boolean[number];
        for (int i = 0;i<number;i++)
            if (!flag[i])
                DFS(i);

    }

    void DFS(int i){
        flag[i] = true;
        System.out.print(vetexs[i] + " ");
        for (int j = 0;j < number;j++)
            if (!flag[j] && edge[i][j] == 1)
                DFS(j);
    }

四、BFS遍历

每次遍历该点所能到达的所有点并添加进队列,每次从队列中继续取点继续遍历。

    void BFS_Map(){
        flag = new boolean[number];
        Queue<Integer> queue = new LinkedList<Integer>();
        for (int i = 0;i<number;i++){
            if (!flag[i]){
                flag[i] = true;
                System.out.print(vetexs[i] + " ");
                queue.add(i);
                while (!queue.isEmpty()){
                    int k = queue.poll();
                    for (int j = 0;j < number;j++){
                        if (edge[k][j] == 1 && !flag[j]){
                            flag[j] = true;
                            System.out.print(vetexs[j] + " ");
                            queue.add(j);
                        }
                    }
                }
            }
        }
    }

相关文章

  • 图的桥和割点

    内容概要: 图中的桥 图的DFS遍历树和BFS遍历树及其与寻桥算法的关系 图的割点 DFS和BFS的对比小结 桥(...

  • 图的BFS & DFS & Dijkstra算法

    python 队列实现的图的BFS,类似于哈夫曼树遍历: 栈实现的图的DFS: BFS扩展最短路径: Dijkst...

  • 无向图DFS和BFS

    基本结构 DFS深度优先遍历 BFS广度优先遍历 符号图

  • 图的遍历DFS和BFS实现

    一、原文 http://blog.csdn.net/qq_24486393/article/details/502...

  • 74_图的遍历(BFS)

    关键词:MatrixGraph和ListGraph的选择方式、图的遍历概念、广度优先(BFS)、深度优先(DFS)...

  • 基本数据结构

    一.图二.树 一.图 1.图的遍历: 通过深度优先遍历DFS和广度优先遍历BFS两种方式。深度优先遍历0 1 2 ...

  • 图的BFS和DFS遍历

    图是一种灵活的数据结构,一般作为一种模型用来定义对象之间的关系或联系。对象由顶点(V)表示,而对象之间的关系或者关...

  • [LeetCode] 226. Invert Binary Tr

    我们学过树的前序遍历(DFS)和层次遍历(BFS),在邓俊辉《数据结构(C++语言版)》的前序遍历和层次遍历的实现...

  • 图的深度优先遍历和广度优先遍历

    图的遍历主要有深度优先搜索 DFS(depth-first search) 和广度优先搜索BFS( breadth...

  • 图论小结

    图的存储 邻接矩阵 邻接表 图的遍历 DFS(双向DFS) BFS(剪枝) 单源最短路径算法 dij 条件:无负权...

网友评论

      本文标题:图的遍历DFS和BFS实现

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