320x100
문제 : leetcode.com/problems/clone-graph/
모든 노드들이 연결된 방향성 없는 그래프가 주어진다.
이를 깊은 복사한 트리를 생성한 뒤 반환하라.
트리 노드부터 탐색해가면서 노드를 붙여나가는 BFS 방식으로 풀었다.
생성된 노드들에 대한 정보를 저장하기 위한 map 을 추가했다. 해당 map의 key는 node.val이 고유하다고 명시되어 있기 때문에 이를 사용하고 map의 value는 Node*을 저장한다.
탐색 중인 노드의 neighbors 들 중 생성되지 않은 노드가 있다면 생성한 뒤 map에 저장, 탐색 중인 노드의 clone 노드에 생성한 노드를 neighbors로 등록. 이미 생성된 노드라면 map에서 해당 노드를 가져온 뒤 clone 노드의 neighbors로 등록하는 식으로 반복해나간다.
시간복잡도는 정점의 개수를 V, 간선의 개수를 E라 한다면 O(N+2V). 2V인 이유는 방향성 없는 그래프이기 때문이다.
소스코드 : github.com/fpdjsns/Algorithm/blob/master/leetcode/medium/133.%20Clone%20Graph.cpp
320x100
'알고리즘 문제 > Leetcode' 카테고리의 다른 글
[leetcode][310] Minimum Height Trees (0) | 2020.11.06 |
---|---|
[leetcode][735] Asteroid Collision (0) | 2020.10.24 |
[leetcode][189] Rotate Array (0) | 2020.10.16 |
[leetcode][701] Insert into a Binary Search Tree (0) | 2020.10.06 |
[leetcode][39] Combination Sum (0) | 2020.10.05 |
댓글