您的位置:首页 > 其它

图的遍历

2016-04-27 22:46 369 查看

1. 图的深度优先遍历

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

//伪代码
public void DFSTraverse(Graph G) {
boolean[] visited = new boolean
; // 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表示顶点树
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);
}
}
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: