Problem From.
https://leetcode.com/problems/clone-graph/
오늘 문제는 주어진 그래프와 똑같은 그래프를 만들어서 반환하는 문제였다.
이 문제는 DFS 로 풀 수 있었는데, 먼저 모든 노드를 가진 map 을 만들고, 각 노드에 연결되는 노드를 value 에 넣어둔다.
그 다음 map 을 순환하면서 새로운 그래프를 만들어서 반환해주었다.
/**
* Definition for a Node.
* class Node(var `val`: Int) {
* var neighbors: ArrayList<Node?> = ArrayList<Node?>()
* }
*/
class Solution {
fun cloneGraph(node: Node?): Node? {
if (node == null) return null
val map = mutableMapOf<Node, Node>()
fun clone(node: Node?): Node? {
if (node == null) return null
if (node in map) return map[node]
val copy = Node(node.`val`)
map[node] = copy
node.neighbors.forEach {
copy.neighbors.add(clone(it))
}
return copy
}
return clone(node)
}
}