Leetcode 133. Clone Graph

作者: ShutLove | 来源:发表于2017-10-21 14:03 被阅读10次
屏幕快照 2017-10-21 下午1.59.01.png

题意:克隆一个无向图。

思路:
因为是克隆所以需要一个map来存储克隆的映射关系,我们可以从给定的第一个节点向它的neighbor一直搜索下去。
如果map的key中有节点,那么搜索直接返回map的value;
如果key中还没有这个节点,那么新建一个节点,并把这对映射关系存入map,然后继续向neighbor搜索下去。

public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
    if (node == null) {
        return node;
    }

    HashMap<UndirectedGraphNode, UndirectedGraphNode> map = new HashMap<>();

    return cloneHelper(node, map);
}

private UndirectedGraphNode cloneHelper(UndirectedGraphNode node, HashMap<UndirectedGraphNode, UndirectedGraphNode> map) {
    if (map.containsKey(node)) {
        return map.get(node);
    }

    UndirectedGraphNode cloneNode = new UndirectedGraphNode(node.label);
    map.put(node, cloneNode);
    for (UndirectedGraphNode neighbor : node.neighbors) {
        cloneNode.neighbors.add(cloneHelper(neighbor, map));
    }

    return cloneNode;
}

相关文章

  • Leetcode图

    133. 克隆图[https://leetcode-cn.com/problems/clone-graph/] 2...

  • Leetcode 133. Clone Graph

    题意:克隆一个无向图。 思路:因为是克隆所以需要一个map来存储克隆的映射关系,我们可以从给定的第一个节点向它的n...

  • LeetCode 133. Clone Graph

    Clone an undirected graph. Each node in the graph contain...

  • 133. Clone Graph

    第一步加到map里面value是null只是为了去重,下一次遇到就不会进queue

  • 133. Clone Graph

  • 133. Clone Graph

    https://leetcode-cn.com/problems/clone-graph/ (图片来源https:...

  • 133. Clone Graph

    给无向连通图中节点的引用,返回图的深拷贝。 DFS 对访问过的节点进行标记,然后用dfs 时间复杂度O(n),空间...

  • LeetCode-python 133. 克隆图

    题目链接[https://leetcode.cn/problems/clone-graph] 难度:中等 ...

  • Leetcode 133 Clone Graph

    解题报告 题目的要求是clone一个无向图。这个无向图的表达方式类似于adjacency list,但是不一样的地...

  • LeetCode 133 [Clone Graph]

    原题 克隆一张无向图,图中的每个节点包含一个 label 和一个表 neighbors。你的程序需要返回一个经过深...

网友评论

    本文标题:Leetcode 133. Clone Graph

    本文链接:https://www.haomeiwen.com/subject/ipeiuxtx.html