【资料结构】DFS与BFS的追蹤

DFS与BFS的追蹤


图一

DFS(深度追蹤)

说明:

以图一为例,当起点设为0时,会不断往下深入,所以0会先向下追蹤分支的其中一个节点,再从该节点不断向下因此会深入到1 3直到底部,直到最底部7,此时会往上追蹤回4当4上面的1被追蹤后,会回到底部7,7会再重另一个分支向上跑,直到每个节点都被追蹤过

程式码:

void my_dfs(int index, head_p point[], int visited[]) {  visited[index] = 1;  stack[++top] = point[index];  for (head_p w = point[index]; w; w = w->next) {    if (w->num > 6 || w->num < 0) {      break;    }    if (visited[w->num] != 1) {      my_dfs(w->num, point, visited);    }  }}

BFS(广度追蹤)

说明:

广度追蹤会先追蹤完同一层节点,再向下追蹤下一层所有节点因此当0为起点,会优先追蹤0的两个分支1,2若1,2节点追蹤完毕后,会分别追蹤分支1,2的两个分支直到节点追蹤完毕

程式码:

void my_bfs(int num, head_p point[], int visited[]) {  stack_new[++top_new] = point[num];  visited[point[num]->num] = 1;  while (point[num]->next) {    if (visited[point[num]->num] == 0) {      stack[++top] = point[num];    }    point[num] = point[num]->next;  }  for (int i = 0; i <= top; i++) {    if (visited[stack[i]->num] == 0) {      my_bfs(stack[i]->num, point, visited);    }  }}


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章