题目描述
解题思路数据结构:利用了map集合
代码如下
public class UndirectedGraphNode{
//每个结点之中都包含一个整数和一个数组
//存的都是与之相邻的所有结点
int label;
ArrayList<UndirectedGraphNode> neighbors;
}
public class Solution{
private HashMap<Integer,UndirectedGraphNode> map = new HashMap<>();
public UndirectedGraphNode cloneGraph(UndirectedGraphNode node){
return clone(node);
}
private UndirectedGraphNode clone(UndirectedGraphNode node){
if(node == null){
return null;
}
//表示的是含从当前结点出发的树已经被构建好了
if(map.containsKey(node.label)){
return map.get(node.label);
}
UndirectedGraphNode clone = new UndirectedGraphNode(node.label);
//往每一个克隆的结点中添加相邻的结点
map.put(clone.label,clone);
for(UndirectedGraphNode neighbor : node.neighbors){
clone.neighbors.add(clone(neighbor));
}
return clone;
}
}