我正在尝试实现BFS函数,该函数将打印使用广度优先搜索遍历访问的有向图节点列表。该函数必须以非递归方式实现,并且必须遍历图中的所有节点,因此,如果有多个树,它将以以下方式打印:
树1:a,b
树2:d,e,h
树3:.....
我的主要困难是,如果图形有几棵树,如何理解BFS函数如何遍历所有节点,而又不重印以前访问过的节点。
答案 0 :(得分:1)
为简单起见,您可以使用队列以非递归方式执行BFS。这里需要两个数据结构。
这是算法:
您可以在线找到许多示例和优化。例如:
https://www.geeksforgeeks.org/breadth-first-search-or-bfs-for-a-graph/
答案 1 :(得分:0)
BFS通常使用队列来完成。处理节点时,将其子节点推入队列。处理完该节点后,您将处理队列中的下一个节点。
这本质上是非递归的。