图
133. 克隆图
输入:adjList = [[2,4],[1,3],[2,4],[1,3]]
输出:[[2,4],[1,3],[2,4],[1,3]]
解释:
图中有 4 个节点。
节点 1 的值是 1,它有两个邻居:节点 2 和 4 。
节点 2 的值是 2,它有两个邻居:节点 1 和 3 。
节点 3 的值是 3,它有两个邻居:节点 2 和 4 。
节点 4 的值是 4,它有两个邻居:节点 1 和 3
解法1
深度便利,递归的创建每个节点和相邻节点 从 1开始 empty return 返回的需要是新创建的节点
var cloneGraph = function(node) {
if(!node) return;
const nodeMap = new Map();
const dfs = (n) => {
const newNode = new Node(n);
newMap.set(n,newNode)
(n.neighbors || []).forEach(neighbor => {
if(!nodeMap.has(neighbor)){
dfs(neighbor);
}
newNode.neighbors.push(newMap.get(neighbor));
})
}
dfs(node);
return nodeMap.get(node);
};