解题思路:
解法来自题目后面讨论区
DFS
维护一个全局变量map,键为节点的值,值为这个新建的节点
从当前节点出发,如果下一邻节点是map中存在的节点就继续深搜,否则直接将当前节点加入邻节点表,然后继续建立下一个邻节点。
提交代码:
class Solution {
Map<Integer,UndirectedGraphNode>map=new HashMap<>();
public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
if(node==null) return null;
if(map.containsKey(node.label))
return map.get(node.label);
UndirectedGraphNode newNode=new UndirectedGraphNode(node.label);
map.put(node.label, newNode);
for(UndirectedGraphNode nd : node.neighbors) {
newNode.neighbors.add(cloneGraph(nd));
}
return newNode;
}
}
提交代码: