深度优先搜索(Depth-First Search,DFS)是一种用于遍历或搜索图或树数据结构的算法。以下是一个用Python实现的DFS算法示例:
def dfs(graph, start, visited=None):
if visited is None:
visited = set()
visited.add(start)
print(start, end=' ') # 打印当前节点
for neighbor in graph[start]:
if neighbor not in visited:
dfs(graph, neighbor, visited)
return visited
# 示例图表示为一个邻接表
graph = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['F'],
'D': [],
'E': ['F'],
'F': []
}
# 从节点 'A' 开始执行DFS
dfs(graph, 'A')
深度优先搜索(Depth-First Search,DFS)是一种用于遍历或搜索图或树数据结构的算法。以下是一个用Python实现的DFS算法示例:
python
复制代码
def dfs(graph, start, visited=None): if visited is None: visited = set() visited.add(start) print(start, end=' ') # 打印当前节点 for neighbor in graph[start]: if neighbor not in visited: dfs(graph, neighbor, visited) return visited # 示例图表示为一个邻接表 graph = { 'A': ['B', 'C'], 'B': ['D', 'E'], 'C': ['F'], 'D': [], 'E': ['F'], 'F': [] } # 从节点 'A' 开始执行DFS dfs(graph, 'A')
代码解释:
-
dfs
函数接收三个参数:graph
:图的邻接表表示。start
:开始遍历的节点。visited
:一个集合,用于跟踪已访问的节点。
-
if visited is None:
:如果visited
为空,初始化一个空集合。 -
visited.add(start)
:将当前节点标记为已访问。 -
print(start, end=' ')
:打印当前节点。 -
for neighbor in graph[start]:
:遍历当前节点的所有邻居节点。 -
if neighbor not in visited:
:如果邻居节点未被访问,递归调用dfs
函数。 -
return visited
:返回所有已访问的节点。