You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
深度优先搜索算法(Depth-First-Search,简称 DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点 v 的所在边都己被探寻过,搜索将回溯到发现节点 v 的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。
这篇文章主要介绍广度优先搜索(BFS)和 深度优先搜索(DFS)算法,它们是图/树常见的俩种遍历算法。
广度优先搜索(BFS)
广度优先搜索算法(英语:Breadth-First-Search,缩写为 BFS),又译作宽度优先搜索,或横向优先搜索,是一种图形搜索算法。简单的说,BFS 是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。
bfs =队列,入队列,出队列
利用队列。
深度优先搜索(DFS)
深度优先搜索算法(Depth-First-Search,简称 DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点 v 的所在边都己被探寻过,搜索将回溯到发现节点 v 的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。
实现步骤:
首先将根节点放入队列中。
从队列中取出第一个节点,并检验它是否为目标。
如果找到目标,则结束搜寻并回传结果。
否则将它某一个尚未检验过的直接子节点加入队列中。
重复步骤 2。
如果不存在未检测过的直接子节点。
将上一级节点加入队列中。
重复步骤 2。
重复步骤 4。
若队列为空,表示整张图都检查过了——亦即图中没有欲搜寻的目标。结束搜寻并回传“找不到目标”。
利用栈。dfs=栈,压栈,出栈。
Js 实现
树结构数据
DFS 实现
BFS 实现
The text was updated successfully, but these errors were encountered: