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;
}
}
'자바 알고리즘' 카테고리의 다른 글
[leetCode - Java/Hash] 819. Most Common Word (0) | 2023.09.29 |
---|---|
[leetCode - Java/Two Pointer] 344. Reverse String (0) | 2023.09.27 |
[leetCode - Trie / Java] 208. Implement Trie (Prefix Tree) (0) | 2023.09.12 |
[leetcode - BST / Java] 230. Kth Smallest Element in a BST (0) | 2023.09.08 |
[leetcode - BST / Java] 530. Minimum Absolute Difference in BST (0) | 2023.09.07 |