File tree Expand file tree Collapse file tree 1 file changed +7
-6
lines changed Expand file tree Collapse file tree 1 file changed +7
-6
lines changed Original file line number Diff line number Diff line change 1
1
M
2
- 1519966780
2
+ 1533605472
3
3
tags : DFS , BFS , Graph
4
4
5
5
给一个graph node , 每个node有list of neighbors . 复制整个graph , return new head node .
6
+
7
+ 实现起来就好像在crawl urls .
6
8
7
9
#### 思想
8
10
- Use HashMap to mark cloned nodes .
@@ -132,20 +134,19 @@ public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
132
134
return null ;
133
135
}
134
136
HashMap <UndirectedGraphNode , UndirectedGraphNode > map = new HashMap <>();
135
- map .put (node , new UndirectedGraphNode (node .label ));
137
+ map .put (node , new UndirectedGraphNode (node .label )); // copy root
136
138
137
- Queue <UndirectedGraphNode > queue = new LinkedList <UndirectedGraphNode >();
139
+ Queue <UndirectedGraphNode > queue = new LinkedList <>();
138
140
queue .offer (node );
139
141
140
142
while (!queue .isEmpty ()) {
141
143
UndirectedGraphNode curr = queue .poll ();
142
144
for (UndirectedGraphNode neighbor : curr .neighbors ) {
143
- // Copy neighbors
144
- if (!map .containsKey (neighbor )) {
145
+ if (!map .containsKey (neighbor )) { // Init neighbors
145
146
queue .offer (neighbor );
146
147
map .put (neighbor , new UndirectedGraphNode (neighbor .label ));
147
148
}
148
- map .get (curr ).neighbors .add (map .get (neighbor ));
149
+ map .get (curr ).neighbors .add (map .get (neighbor )); // link neighbor
149
150
}
150
151
}
151
152
You can’t perform that action at this time.
0 commit comments