2014-04-03 74 views
0

我有一個有向圖,想要遍歷圖中的所有節點。如何遍歷圖中的所有節點?

那麼我可以迭代所有圖表的方式是什麼?

+2

更詳細地描述你的數據結構。 – Marco13

+0

http://algs4.cs.princeton.edu/42directed/Digraph.java.html我正在使用的數據結構 – user3154554

+0

你是什麼意思「保持布爾形式的所有邊」? – azurefrog

回答

1

在toString()方法,就遍歷所有的節點的一個示例:

for (int v = 0; v < V; v++) { 
    s.append(String.format("%d: ", v)); 
    for (int w : adj[v]) { 
     s.append(String.format("%d ", w)); 
    } 
    s.append(NEWLINE); 
} 

注意,節點是簡單的整數;有graph.V()節點,它們被編號爲0 to graph.V() - 1. 這意味着您可以使用簡單的for循環遍歷它們,如上所述。

0

您正在使用的數據結構將圖形存儲爲內存中的鄰接列表。因此,只需將一個節點作爲源/開始節點,然後從那裏運行任何標準圖形遍歷算法(例如BFS或DFS)以迭代所有節點。

+1

如果您只想遍歷所有節點,則不需要此操作(同時隔離的節點也不會被迭代) – joz

+0

這假定圖形是強連接的,或者OP只關心以根節點爲起始節點的樹中的節點。 鏈接文件中的示例圖形未連接,因此我假設這不能保證。 – dorr

+0

是的,遍歷算法不需要迭代遍歷圖,但DFS無論是否連接,都能夠遍歷每個節點。你只需要從每個節點運行它。就像首先檢查節點是否已經訪問過一樣。如果未訪問,請從此處運行DFS。 – mushfek0001