133. 克隆图 - 8月12日

 

题目

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];
    }
};

拓展学习

 

posted on 2020-08-12 14:12  BoysCryToo  阅读(91)  评论(0编辑  收藏  举报

导航