图的遍历

来源:互联网 发布:乌云 世纪佳缘 知乎 编辑:程序博客网 时间:2024/06/05 06:50

1. 图的深度优先遍历

从图中某个顶点出发,访问此顶点,然后从v的未被访问的领接点出发进行深度优先遍历,直到访问到所有顶点。

//伪代码public void DFSTraverse(Graph G) {    boolean[] visited = new boolean[n]; // n表示顶点数    for(int i = 0; i < n; i++) {        if(!visited[i]) {            DFS(G, i);        }    }}public void DFS(Graph G, int i) {    visited[i] = true;    System.out.println(G.vexs[i]); // 打印该顶点信息    for(int j = 0; j < n; j++) {        if(G.arc[i][j] == 1 && !visited[j])            DFS(G, j);    }}

2. 广度优先遍历

//伪代码public void BFSTraverse(Graph G) {    Queue<Integer> queue = new Queue<>();    boolean[] visited = new boolean[n]; //n表示顶点树    for(int i = 0; i < n; i++) {        if(!visited[i]) {            visited[i] = true;            System.out.println(G.vexs[i]);            queue.add(i);            while(!queue.isEmpty()) {                i = queue.poll();                for(int j = 0; j < n; j++) {                    if(G.arc[i][j] == 1 && !visited[j]) {                        visited[j] = true;                        System.out.println(G.vexs[j]);                        queue.add(j);                    }                }            }        }    }}
0 0
原创粉丝点击