完成迭代深化深度优先搜索
本文关键字:深度优先搜索 迭代 | 更新日期: 2023-09-27 18:05:01
现在我有一个看起来像这样的对象。
C#
public class Step {
int id;
List<Step> nextSteps;
}
我试图将它转换成另一个对象,除了不允许循环之外,它看起来非常相似。
它应该通过不展开已经出现在更高深度的节点的子节点来处理循环。迭代深化解决了这个问题(深度优先搜索实现,但广度优先搜索顺序),但我正在努力使用以下结构实现。
我找到的所有实现都依赖于找到某种目标节点,而我需要展开整个树。
任何帮助都会很感激。: D
添加一个Dictionary<Step, int>
,每次展开一个节点时,添加它的深度。
void ExpandStep(Step s, int d)
{
int prevDepth;
if (lookup.TryGetValue(s, out prevDepth) && prevDepth <= d)
return;
lookup.Add(s, d);
...
}