133. Clone Graph
/** * Definition for undirected graph. * struct UndirectedGraphNode { * int label; * vector<UndirectedGraphNode *> neighbors; * UndirectedGraphNode(int x) : label(x) {}; * }; */ class Solution { public: unordered_map<UndirectedGraphNode *,UndirectedGraphNode *> m; unordered_set<UndirectedGraphNode *> visited; UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) { if (node == NULL) return NULL; dfs_create(node); dfs_link(node); return m[node]; } void dfs_create(UndirectedGraphNode *node) { if (node == NULL || m.count(node)) return; UndirectedGraphNode *p = new UndirectedGraphNode(node->label); m[node] = p; for (auto n : node->neighbors) dfs_create(n); } void dfs_link(UndirectedGraphNode *node) { if (node == NULL || visited.count(node)) return; visited.insert(node); for (auto n : node->neighbors) { m[node]->neighbors.push_back(m[n]); dfs_link(n); } } };
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步