1

1)可以使用HashMap來表示無向圖的鄰接列表嗎?使用散列表構建圖形?

HashMap<String,ArrayList<String>>

鍵將是節點並且ArraList將是邊。如果對(1)的回答爲「是」 - 如何在此檢查冗餘?

如:

1 -> 2,3,4 2 -> 1,5,6 ... The 1->2 & 2->1 are same.

在這種情況下,如何做到使用這種數據結構的BFS/DFS?

回答

0

您不必擔心冗餘。 而BFS將以正常格式實施。 我dnt很多地使用Java,所以它的Java和C++的混合。 只是爲了更正確HashMap>會更好,但兩者都可以。原因:集具有獨特的屬性。

ALGO:

HashMap<String, ArrayList<String> > graph; 
Set<String> visited; 
queue<String> currentTraverse; // a data structure which has efficient front removal and back insertion 
currentTraverse.push_back(sourcePoint); 
visited.insert(sourcePoint); 
while(! currentTraverse.empty()) 
{ 
    String currentNode = currentTraverse.front(); 
    currentTraverse.pop_front(); 
    ArrayList<String> adjacentNodes = graph.find(currentNode)->second; 
    for(String node adjacentNodes) 
    { 
     pair<iterator, bool> isVisited = visited.insert(node); 
     if(!isVisited.second) // if not in visited set 
      currentTraverse.push_back(node); 
    } 
}