자바 알고리즘
[leetcode - Java / DFS] 133. Clone Graph
Big Iron
2023. 9. 15. 09:55
1. 문제
- 이웃 노드가 담긴 리스트, 그래프의 전체 복사본을 반환
2. 의사코드
1. 복사본을 저장하기 위한 Hash
private HashMap<Node, Node> map = new HashMap<>();
2. 현재 노드 복사본 생성
Node newNode = new Node(node.val, new ArrayList<>());
3. map에 현재 노드와 복사본 저장
map.put(node, newNode);
4. 반복문으로 복사본에 채우기
3. 시도
class Solution {
private HashMap<Node, Node> map = new HashMap<>();
public Node cloneGraph(Node node) {
// 현재 노드가 null이거나 복사본에 현재 노드가 없을 때
if (node == null) {
return null;
}
if (map.containsKey(node)) {
return map.get(node);
}
Node newNode = new Node(node.val, new ArrayList<>());
visited.put(node, newNode);
for(Node neighbor : node.neighbors) {
newNode.neighbors.add(cloneGraph(neighbor));
}
return newNode;
}
}