LeetCode 133.克隆图 - C++ - 深度优先搜索(DFS)

克隆图

给你无向连通图中一个节点的引用,请你返回该图的深拷贝(克隆)
图中的每个节点都包含它的值 val(int)和其邻居的列表(list[Node])

class Node {
  public int val;
  public List neighbors;
}

说白了,看了半天没懂,大概意思就是说???拷贝一个图?参考了别人的代码,自己还是没理解。等再看看。
感觉拿着 dfs 框架套上去就行了。

代码如下(C++):

class Solution {
public:
  Node* cloneGraph(Node* node) {
    unordered_map<Node*,Node*> mp;  // 无序图
    return dfs(node,mp);            // 直接深度遍历,克隆
  }

  Node* dfs(Node* node,unordered_map<Node*,Node*> &mp){
    if(!node) return NULL;
    if(mp.count(node)) return mp[node];
    Node* tmp = new Node(node -> val);
    mp[node] = tmp;
    for(Node* neighbor: node -> neighbors){
      tmp -> neighbors.push_back(dfs(neighbor,mp));
    }
    return tmp;
  }
};

放在最后

如果您喜欢我的文章,拜托点赞+收藏+关注,博主会根据大家喜好来推出相关系列文章~

更多精彩内容也可以访问我的博客Aelous-BLog

你可能感兴趣的:(LeetCode,leetcode)