給你無向 連通 圖中一個節點的引用,請你返回該圖的 深拷貝(克隆)。
圖中的每個節點都包含它的值 val(int) 和其鄰居的列表(list[Node])。
class Node {
public int val;
public List neighbors;
}
輸入:adjList = [[2,4],[1,3],[2,4],[1,3]]
輸出:[[2,4],[1,3],[2,4],[1,3]]
解釋:
圖中有 4 個節點。
節點 1 的值是 1,它有兩個鄰居:節點 2 和 4 。
節點 2 的值是 2,它有兩個鄰居:節點 1 和 3 。
節點 3 的值是 3,它有兩個鄰居:節點 2 和 4 。
節點 4 的值是 4,它有兩個鄰居:節點 1 和 3 。
class Solution {public Node cloneGraph(Node node) {if(node==null) return node;Queue<Node>queue=new LinkedList<>();Map<Integer,Node> map=new HashMap<>();queue.add(node);Node head=new Node(node.val,new ArrayList<>());map.put(node.val,head);while (!queue.isEmpty()){Node curO=queue.poll();for(Node next:curO.neighbors){if(map.containsKey(next.val))//節點已經新建了{map.get(curO.val).neighbors.add(map.get(next.val));//直接加入鄰居節點}else{Node none=new Node(next.val,new ArrayList<>());//新建節點并且入隊map.put(next.val,none);map.get(curO.val).neighbors.add(none);queue.add(next);}}}return head;}
}