該算法在遍歷圖中的節點方面做得很好。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