简介
广度优先算法(BFS)和深度优先算法(DFS)是图这种数据结构最基础的算法,所以需要我们花心思去学习。能知道BFS和DFS这个名词就证明同学们已经在书上看到了他们的介绍。不过对于初入门的同学来说,书上的内容不免生涩难懂。这里就不重复介绍其概念,屁话不多说直接上图。
图解
在上图中,A为起始点,终点为K。A——>K需要走多少步?因为图相当简单,聪明的同学们一眼可以看出A——>K只需要三步,步骤为:A——>C——>G——>K。虽然这结论乍一看很正确,但是在BFS中的运行流程可不是如此。
接下来我们看一下由A作为起点,走至K,在BFS中的流程是怎么样的。
首先,获取A点所在的位置信息,然后将A放入队列,并记录A所在的轮数为0。
进入while循环,队列首A出列,然后判断出邻近A的元素,为BCDE。符合入队标准的元素进入队列(A就不符合入队标准,因为A已经遍历过),分别记录其所在的轮数1。
BCDE依次出列,然后判断其相邻的元素FGHI,将符合的元素放入队列,并记录其轮数为2。(注:每次出列依次,都是经过一次while循环,但是BC