这个算法在遍历图中的节点方面表现出色。
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);
}
}
}
我可以使用这个方法在图中找到目标节点。工作列表在处理过程中会出列(或弹出)项目。一旦我找到了目标,如何返回到节点的完整路径?更新:我正在尝试找出如何反转到根路径。该方法在根节点上调用,之后子节点可能有两个父节点,因此不能简单地在每个节点上调用父属性并向上遍历。
该方法的目标是查找路径,而不是迭代所有节点或检查节点是否存在。