Clone Graph
public class Solution {
public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
if(node == null) return null;
HashMap<UndirectedGraphNode, UndirectedGraphNode> map =new HashMap<UndirectedGraphNode, UndirectedGraphNode>();
UndirectedGraphNode cloneNode = new UndirectedGraphNode(node.label);
map.put(node, cloneNode);
dfs(map, node);
return cloneNode;
}
private void dfs(HashMap<UndirectedGraphNode, UndirectedGraphNode> map, UndirectedGraphNode node) {
if(node == null) return;
for(UndirectedGraphNode neighbor : node.neighbors) {
if(!map.containsKey(neighbor)) { //用map兼职check是否visit过。
UndirectedGraphNode cloneNeighbor = new UndirectedGraphNode(neighbor.label);
map.put(neighbor, cloneNeighbor);
dfs(map, neighbor);
}
map.get(node).neighbors.add(map.get(neighbor)); //这句是精华,把cloneNeighor加进去
}
}
}

浙公网安备 33010602011771号