题目
133. 克隆图
我的思路
图的遍历:深搜or广搜
用一个哈希表or集合来记录已访问的节点
时间复杂度和空间复杂度都是n,节点总数
我的实现
class Solution { public: map<int,Node*> createdNodeMap; queue<Node *> toVisitQ; void vastCopy(Node *node) { //把第一个节点加入队列 if(node!=nullptr){ toVisitQ.push(node); createdNodeMap[node->val] = new Node(node->val); } //循环扫描队列取出队头处理 while(!toVisitQ.empty()){ Node *tempNode = toVisitQ.front(); toVisitQ.pop(); //处理队头元素:为队头对应的Node添加neighbors,为不存在node的neighbors创建Node for(auto it:tempNode->neighbors){ if(!createdNodeMap.count(it->val)){ createdNodeMap[it->val] = new Node(it->val); toVisitQ.push(it); } createdNodeMap[tempNode->val]->neighbors.push_back(createdNodeMap[it->val]); } } } Node* cloneGraph(Node* node) { vastCopy(node); return createdNodeMap[1]; } };