Leetcode 133:Clone Graph

Given a reference of a node in a connected undirected graph, return a deep copy (clone) of the graph. Each node in the graph contains a val (int) and a list (List[Node]) of its neighbors.

Example:
在这里插入图片描述
Input:
{“KaTeX parse error: Expected '}', got 'EOF' at end of input: …"neighbors":[{"id”:“2”,“neighbors”:[{“KaTeX parse error: Expected 'EOF', got '}' at position 9: ref":"1"}̲,{"id”:“3”,“neighbors”:[{“KaTeX parse error: Expected 'EOF', got '}' at position 9: ref":"2"}̲,{"id”:“4”,“neighbors”:[{“KaTeX parse error: Expected 'EOF', got '}' at position 9: ref":"3"}̲,{"ref”:“1”}],“val”:4}],“val”:3}],“val”:2},{"$ref":“4”}],“val”:1}

Explanation:
Node 1’s value is 1, and it has two neighbors: Node 2 and 4.
Node 2’s value is 2, and it has two neighbors: Node 1 and 3.
Node 3’s value is 3, and it has two neighbors: Node 2 and 4.
Node 4’s value is 4, and it has two neighbors: Node 1 and 3.

Note:

1.The number of nodes will be between 1 and 100.
2.The undirected graph is a simple graph, which means no repeated edges and no self-loops in the graph.
3.Since the graph is undirected, if node p has node q as neighbor, then node q must have node p as neighbor too.
4.You must return the copy of the given node as a reference to the cloned graph.

C++
  Node* cloneGraph(Node* node) {
        unordered_map<Node*,Node*> m;
        return helper(node,m);
    }
    Node* helper(Node* node,unordered_map<Node*,Node*>& m)
    {
        if(!node)
            return nullptr;
        if(m.count(node))return m[node];
        Node* clone = new Node(node->val);
        m[node] = clone;
        for(auto neighbor : node->neighbors)
        {
            clone->neighbors.push_back(helper(neighbor,m));
        }
        return clone;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值