2010-04-19 88 views
0

我正在創建基於有向圖的算法。我想要一個將抓取所有連接到特定節點的節點的函數。將抓取連接到特定節點的所有節點的算法

public List<Node> GetNodesInRange(Graph graph, int Range, Node selected) 
{ 
    var result = new List<Node>(); 
    result.Add(selected); 
    if (Range > 0) 
    { 
     foreach (Node neighbour in GetNeighbours(graph, selected)) 
     { 
      result.AddRange(GetNodesInRange(graph, Range - 1, neighbour)); 
     } 
    } 
    return result; 
} 

private List<Node> GetNeighbours(Graph graph, Node selected) 
{ 
    foreach(Node node in graph.node) 
    { 
     if (node == selected) 
     { 
      GetNodesInRange(node, Range-1, /*don't know what 2 do here*/); 
      //and confused all the way down 
+1

投票結束,因爲你的問題太模糊。 – spender 2010-04-19 01:49:36

+0

到目前爲止您的解決方案是什麼? – 2010-04-19 02:32:45

+0

上面編輯過,所以每個人都能理解 – GatesReign 2010-04-19 02:46:20

回答

2

這取決於哪種實現您正在使用您的圖形:

  • 邊列表:您搜索具有指定的頂點作爲第一或第二個參數邊緣
  • 所有邊緣
  • 鄰接表:附加到節點的列表已經是事件發生的節點列表
  • 鄰接墊RIX:你把你選擇
0

要調用GetNodesInRangeGetNeighboursGetNeighboursGetNodesInRange和創造問題的頂點列(或行)。

看看Jack的答案。

如果您發佈您的Graph,NodeEdge外觀如何,那麼我們將能夠提供更多幫助。

相關問題