深度优先(DFS)
- 先访问第一个节点(每访问一个节点需要标记已访问,可用数组)
- 结点v入栈
- 当栈非空时,继续执行,否则算法结束
- 出栈,取得头结点u
- 查找u的第一个邻结点w
- 若u的邻结点w不存在,返回第三步,否则执行下面步骤
- 若结点w尚未被访问,访问w并标记为已访问(若已经被访问,则跳过下一小步)
- 结点w入栈
- 查找结点u相对于w的下一个邻结点
- 若是连通图,一次则可完成,否则需要循环调用方法
广度优先(BFS)
- 访问初始节点v并标记节点v为已访问
- 节点v入队列
- 当队列非空时,继续执行,否则算法结束
- 出队列,取得队头节点u
- 查找节点u的第一个邻结点w
- 若节点u的邻结点w不存在,则回到第三步,否则执行以下三个步骤
- 若结点w尚未被访问,访问结点w并标记w为已访问(若已经被访问,跳过下一小步)
- 结点w入队列
- 查找结点u的相对于w的下一个邻结点w,转到步骤6
- 若是连通图,一次则可完成,否则需要循环调用方法