任何人有在C#准备执行反向广度优先遍历算法的?

通过反向广度优先遍历,我的意思是不是在搜索公共节点开始的树形结构,我想从底部查找树逐步收敛到一个公共节点。

让我们看看下面的图中,这是一个广度优先遍历的输出: “替代文字“

在我的反向广度优先遍历,9101112将是第几个节点实测值(它们的顺序并不重要,因为他们都是一阶)。 5678是第二几个节点发现,依此类推。 1将是最后一个节点发现。

任何想法或指针?

编辑:改变“广度优先搜索”到“广度优先遍历”澄清的问题

有帮助吗?

解决方案

运行从rootNode正常BFS和让depth[i] = linked list of nodes with depth i。因此,对于你的例子,你将有:

depth[1] = {1}, depth[2] = {2, 3, 4} etc.。你可以用一个简单的BFS搜索建立这个。然后打印在depth[maxDepth]所有节点,那么那些在depth[maxDepth - 1]

一节点i的深度等于其父亲节点的深度+ 1的根节点的深度可被认为1或0。

其他提示

使用一个堆栈和队列的一个组合。

执行使用队列(我想你知道已经这样做),并保持在堆栈上推的节点,你遇到他们的“正常” BFS。

一旦与BFS完成,堆栈将包含反向BFS顺序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top