该算法在遍历图中的节点方面做得很好。C#图形遍历
Dictionary<Node, bool> visited = new Dictionary<Node, bool>();
Queue<Node> worklist = new Queue<Node>();
visited.Add(this, false);
worklist.Enqueue(this);
while (worklist.Count != 0)
{
Node node = worklist.Dequeue();
foreach (Node neighbor in node.Neighbors)
{
if (!visited.ContainsKey(neighbor))
{
visited.Add(neighbor, false);
worklist.Enqueue(neighbor);
}
}
}
我可以用它在图中找到一个目标节点。工作清单在处理工作清单时使项目出列(或弹出)。一旦找到目标,我该如何返回节点的完整路径?
更新 我想弄清楚如何反转到根的路径。该方法在根节点上调用,此后,子节点可能有两个父节点,因此不像调用每个节点上的父属性和遍历备份那么简单。
该方法的目标是找到路径,而不是迭代所有节点,或检查节点是否存在。
你有π.Add(neighbor,visited);和π字典的价值是一个节点,你在跟踪的价值是什么? – blu 2009-03-05 15:40:54