带你认识深度优先搜索和广度优先搜索

1,329 阅读1分钟

我们先来看一张图。


深度优先搜索(DFS):深度优先搜索其实就是一条路走到黑。从初始点出发,不断向前探索,如果碰到死路了, 就往回走一步,尝试另一条路。如果是树结构,其实就是前序遍历。

广度优先搜索(BFS):广度优先搜索其实就是一层层搜索。从初始点出发,同时向前探索所有的路径,如果碰到死路就停止。如果是树结构,就是层序遍历。

tips:还很懵是不是?懵就对了。下面我们一步步用代码实现出来。

图的表示方法:

图的表示方法有二维矩阵和领接表,每个方式的优缺点都不一样,本例用领接表表示。


深度优先搜索


广度优先搜索


广度优先搜索扩展算法

适合不带权的两点之间最短距离


适合带权的两点之间的最短路径。也叫迪杰斯特拉算法(属于贪心算法一种)


总结

多练就是了!