public class Solution { public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) { if(node==null) return null; Map<UndirectedGraphNode, UndirectedGraphNode> map=new HashMap<UndirectedGraphNode, UndirectedGraphNode>(); Queue<UndirectedGraphNode> que=new LinkedList<UndirectedGraphNode>(); que.add(node); map.put(node,new UndirectedGraphNode(node.label)); while(!que.isEmpty()) { UndirectedGraphNode cur=que.poll(); for(UndirectedGraphNode child:cur.neighbors) { if(!map.containsKey(child)) { map.put(child, new UndirectedGraphNode(child.label)); que.add(child); } map.get(cur).neighbors.add(map.get(child)); } } return map.get(node); } }