LeetCode:133.克隆图
LeetCode:133.克隆图
code lang change var / dissame lang change method ifame lang
解题思路拷贝所有节点。拷贝所有的边。
解题步骤深度或广度优先遍历所有节点。拷贝所有的节点,存储起来。将拷贝的节点,按照原图的连接方法进行连接。
var cloneGraph = function(node) {
if(!node) return;
let visited=new Map();
var dfs=(root)=>{
let init=new _Node(root.val);
visited.set(root,init);
(root.neighbors||[]).forEach(item=>{
if(!visited.has(item)){
dfs(item)
}
init.neighbors.push(visited.get(item))
})
}
dfs(node);
return visited.get(node)
};
//time:76ms/O(v+e) space:51.73mb/O(v)
//time:55ms/O(v+e) space:52.68mb/O(v)
var cloneGraph = function (node) {
if (!node) return;
let visited = new Map();
let queue = [node];
let n;
visited.set(node, new _Node(node.val));
while (queue.length) {
n = queue.shift();
(n.neighbors || []).forEach((item) => {
if (!visited.has(item)) {
queue.push(item);
visited.set(item, new _Node(item.val));
}
visited.get(n).neighbors.push(visited.get(item));
});
}
return visited.get(node);
};
bfs dfs
'

浙公网安备 33010602011771号