宽度优先搜索算法(Breadth-First-Search,简称为BFS )是利用队列实现的搜索算法。 简而言之,其搜索过程类似于“石头落在湖面上引起涟漪”。
深度优先搜索算法(Depth-First-Search,简称为DFS )是利用堆栈实现的搜索算法。 简而言之,其检索过程与“不撞到南墙不回头”相似。
BFS侧重于队列,DFS侧重于堆栈。 这就是它们的本质区别。
BFS常用于寻找单一的最短路径,其特点是“寻则最优解”,而DFS用于寻找所有解的问题,其空间效率高,而且找到的未必是最优解,必须记录并完成整个搜索