【发布时间】:2024-04-21 23:45:02
【问题描述】:
我正在尝试实现一个 BFS 函数,该函数将打印使用广度优先搜索遍历访问的有向图的节点列表。该函数必须以非递归方式实现,并且必须遍历图中的所有节点,因此如果有多个树,它将按以下方式打印:
树 1:a,b
树 2:d、e、h
树 3:.....
我的主要困难是理解如何使 BFS 函数遍历所有节点,如果图有几棵树,而不重新打印以前访问过的节点。
【问题讨论】:
标签: python breadth-first-search
我正在尝试实现一个 BFS 函数,该函数将打印使用广度优先搜索遍历访问的有向图的节点列表。该函数必须以非递归方式实现,并且必须遍历图中的所有节点,因此如果有多个树,它将按以下方式打印:
树 1:a,b
树 2:d、e、h
树 3:.....
我的主要困难是理解如何使 BFS 函数遍历所有节点,如果图有几棵树,而不重新打印以前访问过的节点。
【问题讨论】:
标签: python breadth-first-search
为简单起见,您可以使用队列以非递归方式执行 BFS。这里需要两个数据结构。
这是算法:
您可以在网上找到许多示例和优化。例如:
https://www.geeksforgeeks.org/breadth-first-search-or-bfs-for-a-graph/
【讨论】:
BFS 通常使用队列完成。当您处理一个节点时,您将其子节点推入队列。处理完节点后,您将处理队列中的下一个节点。
这本质上是非递归的。
【讨论】: