@@ -62,29 +62,27 @@ class Solution {
62
62
}
63
63
64
64
// BFS
65
- GraphNode *cloneGraph_2 (GraphNode *node) {
66
- if (!node) return NULL ;
67
- queue<GraphNode*> q;
65
+ UndirectedGraphNode *cloneGraph_2 (UndirectedGraphNode *node) {
66
+ if (node == nullptr ) {
67
+ return nullptr ;
68
+ }
69
+ unordered_map<UndirectedGraphNode*, UndirectedGraphNode*> nodesMap;
70
+ nodesMap[node] = new UndirectedGraphNode (node->label );
71
+ queue<UndirectedGraphNode*> q;
68
72
q.push (node);
69
- MAP map;
70
- map[node] = new GraphNode (node->label );
71
- while (!q.empty ())
72
- {
73
- GraphNode *oriNode = q.front (); q.pop ();
74
- GraphNode *newNode = map[oriNode];
75
- for (int i = 0 ; i < oriNode->neighbors .size (); ++i)
76
- {
77
- GraphNode *oriNeighbor = oriNode->neighbors [i];
78
- if (map.find (oriNeighbor) != map.end ()) {
79
- newNode->neighbors .push_back (map[oriNeighbor]);
80
- continue ;
73
+ while (!q.empty ()) {
74
+ UndirectedGraphNode* tmp = q.front ();
75
+ q.pop ();
76
+ for (int i = 0 ; i < tmp->neighbors .size (); ++i) {
77
+ UndirectedGraphNode* neighbor = tmp->neighbors [i];
78
+ if (nodesMap.find (neighbor) == nodesMap.end ()) {
79
+ UndirectedGraphNode* newNode = new UndirectedGraphNode (neighbor->label );
80
+ nodesMap[neighbor] = newNode;
81
+ q.push (neighbor);
81
82
}
82
- GraphNode *newNeighbor = new GraphNode (oriNeighbor->label );
83
- newNode->neighbors .push_back (newNeighbor);
84
- map[oriNeighbor] = newNeighbor;
85
- q.push (oriNeighbor);
83
+ nodesMap[tmp]->neighbors .push_back (nodesMap[neighbor]);
86
84
}
87
85
}
88
- return map [node];
86
+ return nodesMap [node];
89
87
}
90
- };
88
+ };
0 commit comments