首页 > 其他分享 >图的遍历

图的遍历

时间:2023-11-06 22:22:33浏览次数:20  
标签:遍历 false Graph visit DFS visited true

//DFS
void DFSTravel(Graph G){
    for(i=0,i<G.vexnum,i++){
        visited[i]=false;
    }
    for(i=0,i<G.vexnum,i++){
        DFS(G,i);
    }

void DFS(Graph G,int v){
    visit(v);
    visited[v]=true;
    for(w=FirstNeighbor(G,v);w>=0;w=NextNeighbor(G,v,w)){
        if(!visited[w])
           DFS(G,w);
    }
}
//BFS
void BFSTravel(Graph G){
    InitQueue(Q);
    for(i=0,i<G.vexnum,i++){
        visited[i]=false;
    }
    for(i=0,i<G.vexnum,i++){
        BFS(G,i);
    }
}

void BFS(Graph G,int v){
    visit[v];
    visited[v]=true;
    Enqueue(Q,v);
    while(!isEmpty(Q)){
        DeQueue(Q,p);
        for(w=FirstNeighbor(G,v);w>=0;w=NextNeighbor(G,v,w)){
           if(!visited[w]){
               visit[w];
               visited[w]=true;
               EnQueue(Q,w);
        }
    }
}
//DFS非递归
void DFS_No_RC(Graph G){
    InitStack(S);
    for(i=0,i<G.vexnum,i++){
        visited[i]=false;
    }
    visited[v]=true;
    Push(S,v)
    while(!isEmpty(S)){
        k=pop(S);
        visit(k);
        for(w=FirstNeighbor(G,k);w>=0;w=NextNeighbor(G,k,w)){
           if(!visited[w]){
               visited[w]=true;
               push(S,w);
        }
    }
}

标签:遍历,false,Graph,visit,DFS,visited,true
From: https://www.cnblogs.com/xyzd/p/17813899.html

相关文章