연결된 무방향 그래프 의 노드에 대한 참조가 제공됩니다 .
그래프의 전체 복사본 (클론)을 반환합니다 .
그래프의 각 노드에는 이웃 노드의 값( int)과 목록( )이 포함되어 있습니다.List[Node]
import java.util.*;
public class Solution {
public Node cloneGraph(Node node) {
if (node == null) {
return null;
}
Map<Node, Node> visited = new HashMap<>();
Queue<Node> queue = new LinkedList<>();
queue.add(node);
// Create a mapping between original nodes and cloned nodes
visited.put(node, new Node(node.val));
while (!queue.isEmpty()) {
Node originalNode = queue.poll();
for (Node neighbor : originalNode.neighbors) {
if (!visited.containsKey(neighbor)) {
// Clone the neighbor node and add it to the queue
visited.put(neighbor, new Node(neighbor.val));
queue.add(neighbor);
}
// Connect the cloned nodes
visited.get(originalNode).neighbors.add(visited.get(neighbor));
}
}
return visited.get(node);
}
}