forked from algorhythms/LeetCode-Java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSolution.java
More file actions
32 lines (28 loc) · 987 Bytes
/
Solution.java
File metadata and controls
32 lines (28 loc) · 987 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package CloneGraph;
import commons.datastructures.UndirectedGraphNode;
import java.util.HashMap;
import java.util.Map;
/**
* User: Danyang
* Date: 1/27/2015
* Time: 23:55
* Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors.
*/
public class Solution {
public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
if(node==null)
return null;
Map<UndirectedGraphNode, UndirectedGraphNode> cloned = new HashMap<>();
dfs(node, cloned);
return cloned.get(node);
}
void dfs(UndirectedGraphNode node, Map<UndirectedGraphNode, UndirectedGraphNode> cloned) {
UndirectedGraphNode clone = new UndirectedGraphNode(node.label);
cloned.put(node, clone);
for(UndirectedGraphNode neighbor: node.neighbors) {
if(!cloned.containsKey(neighbor))
dfs(neighbor, cloned);
clone.neighbors.add(cloned.get(neighbor));
}
}
}