C++ 深度优先搜索
时间: 2023-11-08 10:05:43 浏览: 116
深度优先搜索c++代码
深度优先搜索(Depth First Search,DFS)是一种用于遍历或搜索树或图的算法。它从根节点开始,沿着路径直到达到叶子节点,然后回溯到前一个节点,继续搜索未探索的分支。DFS 使用栈来保存路径上的节点。
下面是深度优先搜索的伪代码:
1. 创建一个空栈,将起始节点压入栈中
2. 创建一个空集合,用于记录已访问的节点
3. 当栈不为空时,执行以下步骤:
- 从栈中弹出一个节点
- 如果弹出的节点是目标节点,则搜索成功,结束
- 如果弹出的节点没有被访问过,则将其标记为已访问,并将其未访问的邻居节点压入栈中
4. 如果栈为空且未找到目标节点,则搜索失败
深度优先搜索的时间复杂度为 O(V + E),其中 V 是节点数,E 是边数。如果搜索完整个图或树,那么每个节点都会被访问一次。
阅读全文