实现图的深度优先遍历和广度优先遍历算法
时间: 2023-10-04 10:05:58 浏览: 93
深度优先遍历(DFS)算法的实现:
1. 创建一个栈来存储遍历的节点,将起始节点压入栈中。
2. 创建一个 visited 数组,用来记录节点是否已经被访问过,将起始节点标记为已访问。
3. 当栈不为空时,从栈顶取出一个节点,并遍历它的邻居节点,如果邻居节点没有被访问过,则将其压入栈中,并标记为已访问。
4. 重复步骤 3,直到栈为空。
以下是深度优先遍历的 Python 代码实现:
```python
def dfs(graph, start):
stack = [start]
visited = set([start])
while stack:
node = stack.pop()
print(node)
for neighbor in graph[node]:
if neighbor not in visited:
stack.append(neighbor)
visited.add(neighbor)
```
广度优先遍历(BFS)算法的实现:
1. 创建一个队列来存储遍历的节点,将起始节点加入队列中。
2. 创建一个 visited 数组,用来记录节点是否已经被访问过,将起始节点标记为已访问。
3. 当队列不为空时,从队列头部取出一个节点,并遍历它的邻居节点,如果邻居节点没有被访问过,则将其加入队列尾部,并标记为已访问。
4. 重复步骤 3,直到队列为空。
以下是广度优先遍历的 Python 代码实现:
```python
from collections import deque
def bfs(graph, start):
queue = deque([start])
visited = set([start])
while queue:
node = queue.popleft()
print(node)
for neighbor in graph[node]:
if neighbor not in visited:
queue.append(neighbor)
visited.add(neighbor)
```
其中,graph 是图的邻接表表示,start 是遍历的起始节点。
阅读全文