Skip to content

Instantly share code, notes, and snippets.

@junjiah
Last active January 3, 2016 16:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save junjiah/8487842 to your computer and use it in GitHub Desktop.
Save junjiah/8487842 to your computer and use it in GitHub Desktop.
solved "Clone Graph" on LeetCode http://oj.leetcode.com/problems/clone-graph/
// class UndirectedGraphNode {
// int label;
// ArrayList<UndirectedGraphNode> neighbors;
// UndirectedGraphNode(int x) {
// label = x;
// neighbors = new ArrayList<UndirectedGraphNode>();
// }
// }
public class Solution {
public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
if (node == null) return null;
UndirectedGraphNode newNode = new UndirectedGraphNode(node.label);
map = new HashMap<UndirectedGraphNode, UndirectedGraphNode>();
map.put(node, newNode);
cloneVerticesByDFS(node, newNode);
return newNode;
}
public void cloneVerticesByDFS(UndirectedGraphNode node,
UndirectedGraphNode newNode) {
for (UndirectedGraphNode neighbor : node.neighbors) {
if (map.containsKey(neighbor)) {
newNode.neighbors.add(map.get(neighbor));
}
else {
UndirectedGraphNode newNeighbor =
new UndirectedGraphNode(neighbor.label);
newNode.neighbors.add(newNeighbor);
map.put(neighbor, newNeighbor);
cloneVerticesByDFS(neighbor, newNeighbor);
}
}
}
private Map<UndirectedGraphNode, UndirectedGraphNode> map;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment