作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
有人可以用 C# 实现反向广度优先遍历算法吗?
通过反向广度优先遍历,我的意思不是从公共(public)节点开始搜索树,而是从底部搜索树并逐渐收敛到公共(public)节点。
让我们看下图,这是广度优先遍历的输出:
在我的反向广度优先遍历中,9
,10
,11
and 12
会是前几个找到节点(它们的顺序并不重要,因为它们都是一阶的)。 5
、6
、7
和8
是找到的第二个节点,以此类推。 1
将是找到的最后一个节点。
有什么想法或建议吗?
编辑:将“广度优先搜索”更改为“广度优先遍历”以澄清问题
最佳答案
使用堆栈和队列的组合。
使用队列执行“正常”BFS(我假设您已经知道这样做),并在遇到节点时不断将节点插入堆栈。
一旦完成 BFS,堆栈将包含反向 BFS 顺序。
关于c# - C#中的反向广度优先遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2578932/
所以我有一个有向图,我添加了顶点和边。该图表示机场和它们之间的航类。当我运行广度优先或深度优先搜索以找到两个机场之间的路径时,我第一次得到了正确的答案,但是当我第二次使用完全相同的机场运行它时,它找不
我是一名优秀的程序员,十分优秀!