图是一种复杂的非线形的结构,和树的遍历类似,图的遍历也是从某个顶点出发,沿着某条搜索路径对图中每个顶点各做一次且仅做一次访问。它是许多图的算法的基础。
深度优先遍历和广度优先遍历是最为重要的两种遍历图的方法。它们对无向图和有向图均适用。
如果把图的遍历想成走迷宫的话,那么他们的思路是这样的:
深度优先遍历是一种纵向方法,它的思路是:沿着一条路走到头,直到碰到“脸”,然后在退出来去另寻其他路,直到发现所有的路都以走完为止。
广度优先遍历是一种横向方法,它的思路是:从起点开始,假如我面前有三条路,那么我三条路都走一下,然后看看是不是能走出去,假如不行,那我就从我走的第一条路再去找其他的路子,方法和第一次一样,找完之后再去第二条路找其他路子,如此反复,就像打仗的步步为营,层层推进一样,直到最后找完所有的路子。
方法虽然不同,但是效果确实一样的。