2026/02/23

[LeetCode] 133 Clone Graph

  1. /*
  2. // Definition for a Node.
  3. class Node {
  4. public:
  5. int val;
  6. vector<Node*> neighbors;
  7. Node() {
  8. val = 0;
  9. neighbors = vector<Node*>();
  10. }
  11. Node(int _val) {
  12. val = _val;
  13. neighbors = vector<Node*>();
  14. }
  15. Node(int _val, vector<Node*> _neighbors) {
  16. val = _val;
  17. neighbors = _neighbors;
  18. }
  19. };
  20. */
  21. class Solution {
  22. public:
  23. std::map<int, Node*> cloneNodeMap;
  24. Node* cloneGraph(Node* curNode) {
  25. if (curNode == nullptr)
  26. return nullptr;
  27. auto cloneNode = new Node(curNode->val);
  28. cloneNodeMap[curNode->val] = cloneNode;
  29. for (Node* neighbor : curNode->neighbors) {
  30. if (cloneNodeMap[neighbor->val] == nullptr) {
  31. Node* cloneNeighbor = cloneGraph(neighbor);
  32. cloneNode->neighbors.push_back(cloneNeighbor);
  33. }
  34. else
  35. cloneNode->neighbors.push_back(cloneNodeMap[neighbor->val]);
  36. }
  37. return cloneNode;
  38. }
  39. };