- ๋ฌธ์ : https://leetcode.com/problems/clone-graph/
- ํ์ด: https://algorithm.jonghoonpark.com/2024/02/13/leetcode-133
class Solution {
public Node cloneGraph(Node node) {
return cloneGraph(new HashMap<>(), node);
}
private Node cloneGraph(Map<Integer, Node> map, Node node) {
if(node == null) {
return null;
}
if (map.containsKey(node.val)) {
return map.get(node.val);
}
Node copy = new Node(node.val);
map.put(node.val, copy);
for (int i = 0; i < node.neighbors.size(); i++) {
Node neighborNode = node.neighbors.get(i);
copy.neighbors.add(map.getOrDefault(neighborNode.val, cloneGraph(map, node.neighbors.get(i))));
}
return copy;
}
}node(vertex)์ ์๋ฅผ V, edge์ ์๋ฅผ E ๋ผ๊ณ ํ์์ ๋ ๊ฐ ๋
ธ๋ ๋ง๋ค edge์ ์๋งํผ ๋ฐ๋ณต์ ํด์ผํ๋ค.
์๊ฐ ๋ณต์ก๋๋ O(V + E) ์ด๋ค. ๊ณต๊ฐ ๋ณต์ก๋๋ O(V)์ด๋ค.