深度优先遍历(DFS)和广度优先遍历(BFS)为图的搜索的两种方式。
1.深度优先遍历(DFS)
以一个未被访问的顶点作为起始顶点,然后再沿着当前顶点的边走到未被访问的顶点,当没有未访问过的顶点时,则返回至上一个顶点,再继续试探别的顶点,直到所有的顶点均被访问。
我们从节点A开始搜索,此时节点A的子节点有节点B和节点C,先遍历节点B,然后再遍历节点B的子节点节点D,再遍历节点D的子节点节点H。此时,节点H没有可遍历的子节点,返回上一个节点节点D,再遍历节点I。返回至节点I的上一个节点节点D,除了节点H和节点I后,没有可遍历的节点,再返回至节点D的上一个节点节点B,再访问节点E。再访问节点J,返回节点E,再访问节点K,返回节点E,返回节点B,返回节点A,访问节点C,访问节点F,访问节点L,返回节点F,访问节点M,返回节点F,返回节点C,访问节点G,访问节点N,返回节点G,访问节点O,搜索完成,可用栈实现。
2.广度优先遍历(BFS)
从一个未被遍历的节点出发,先遍历这个节点的相邻节点,再遍历每个相邻节点的相邻节点。
遍历顺序为ABCDEFGHIJKLMNO。可用队列实现。