BFS(Breadth First Search),DFS(Depth First Search)
BFS 广度优先搜索,DFS 深度优先搜索是两种常用的图搜索算法。
BFS
在图上进行BFS之前,我们先来看一下在树上进行BFS的结果。
对如图一棵树BFS的过程即按层进行遍历的过程。结果为 ABCDEFGH。
然而,图没有根结点,因此我们需要规定一个节点作为源节点。在这里,我们规定A为源节点。
对该图进行BFS结果为 ABCDEF (通常情况下,BFS结果不唯一,如ACBDEF ,ACBEDF都是BFS的结果)。
虽然BFS的结果不唯一,但如ABCEDF并不是BFS的结果(因为BE之间不相连)。
DFS
DFS同BFS一样,同样是从一个节点开始,随便选一条路,直到走到不能走再往回走。
同样以这张图为例,以A为源节点进行DFS,过程为:
总结来说,BFS是一层一层走。DFS是一条路走到黑,直到不能再走时回头。