Shu-How Zの小窝

Loading...

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

'

posted @ 2025-01-13 18:30  KooTeam  阅读(7)  评论(0)    收藏  举报