广度优先遍历(BFS)与深度优先遍历(DFS)

一、广度优先遍历(图的广度优先遍历类似于二叉树的层序遍历)

1、概念

广度优先遍历(BFS)与深度优先遍历(DFS)_第1张图片
(1)邻接矩阵

  • 先从一个点出发,将其所有的邻接点放到一个对列中
  • 当放完之后
  • 从队头的点开始,找是否有邻接点,如果有的话,再从队尾接上
  • 如果没有就队列头部元素出队,然后找新的对列元素时候有邻接点,如果有的话,再从队尾接上
  • 之后的过程一样
  • 但按照这样的方式找完之后,如果图中还有没有被访问的点的话,就从未访问的点开始进行同样的过程

(2)邻接表

在邻接表中,如果已经给出了一个邻接表,那么在遍历的时候,就有一定的顺序,在邻接表中,谁在前面,谁还没有遍历,则先遍历谁,先将谁放到对列中。


2、框架

#include 

using namespace std;

const int maxn=100;
bool visit[maxn][maxn];//访问标记//是否被访问
int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};//方向向量
//如果向左运动的话,x+1,y+0,所以第一个代表向左运动
//如果向右运动的话,x-1,y+0,所以第二个代表向左运动
//如果向上运动的话,x+0,

你可能感兴趣的:(广度优先遍历(BFS)与深度优先遍历(DFS))