Clone Graph

bong bong·2023년 9월 15일

알고리즘

목록 보기
4/31

요구사항

연결된 무방향 그래프 의 노드에 대한 참조가 제공됩니다 .

그래프의 전체 복사본 (클론)을 반환합니다 .

그래프의 각 노드에는 이웃 노드의 값( 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);
    }
}
profile
let's go invent tomorrow rather than worrying about what happened yesterday - Steven Paul Jobs

0개의 댓글