【133】Clone Graph (2019年3月9日,复习)

给定一个图,返回它的深拷贝。

题解:dfs 或者 bfs 都可以

 

 1 /*
 2 // Definition for a Node.
 3 class Node {
 4 public:
 5     int val;
 6     vector<Node*> neighbors;
 7 
 8     Node() {}
 9 
10     Node(int _val, vector<Node*> _neighbors) {
11         val = _val;
12         neighbors = _neighbors;
13     }
14 };
15 */
16 class Solution {
17 public:
18     Node* cloneGraph(Node* node) {
19         if (!node) {return node;}
20         unordered_map<Node*, Node*> memo;
21         Node* copy = new Node(node->val,  vector<Node*>{});
22         memo[node] = copy;
23         queue<Node*> que;
24         que.push(node);
25         unordered_set<Node*> visit;
26         visit.insert(node);
27         while (!que.empty()) {
28             Node* cur = que.front(); que.pop();
29             Node* copyCur = memo[cur];
30             for (auto& adj : cur->neighbors) {
31                 if (memo.find(adj) == memo.end()) {
32                     Node* copyAdj = new Node(adj->val, vector<Node*>{});
33                     memo[adj] = copyAdj;
34                 }
35                 copyCur->neighbors.push_back(memo[adj]);
36                 if (visit.find(adj) == visit.end()) {
37                     visit.insert(adj);
38                     que.push(adj);
39                 }
40             }
41         }
42         return copy;
43     }
44 };
View Code

相关文章:

  • 2021-05-17
  • 2021-06-26
  • 2021-11-09
  • 2021-10-17
  • 2022-01-08
  • 2021-08-17
  • 2021-12-06
猜你喜欢
  • 2021-10-21
  • 2021-07-30
  • 2021-11-13
  • 2022-12-23
  • 2022-12-23
  • 2021-06-19
  • 2021-11-21
相关资源
相似解决方案