DFS 与BFS 的不同之处 直接采用递归 从一个点的邻点直接向下搜索 而不是一个点的所有邻点 。可以把BFS想成一张网 DFS相当于一条路走到黑走不通再换别的路
DFS比BFS更容易理解
1 void DFSraverse(MatrixGraph *G) 2 { 3 int i; 4 for(i=0;i<G->VertexNum;i++) 5 G->IsTrav[i]=0; 6 printf("深度优先遍历节点"); 7 for(i=0;i<G->VertexNum;i++) 8 if(!G->IsTrav[i]) 9 DFSM(G,i); 10 printf("\n"); 11 12 } 13 14 void BFSM(MatrixGraph *G,int i) 15 { 16 int j; 17 G->IsTrav[i]=1; 18 printf("->%c",G->Vertex[i]); 19 for(j=0;j<G->VertexNum;j++) 20 if(G->Edges[i][j]!=MAXVALUE &&!G->IsTrav[i]) 21 { 22 DFSM(G,j); 23 } 24 }
时间: 2024-08-30 06:58:11