leetcode:Clone Graph

来源:互联网 发布:纹身字体设计软件 编辑:程序博客网 时间:2024/06/11 18:55


复制图的结构,直接使用BFS广度优先搜索的方法进行图的遍历

利用HashMap作为是否访问过的标记


<span style="font-size:18px;">/** * Definition for undirected graph. * class UndirectedGraphNode { *     int label; *     List<UndirectedGraphNode> neighbors; *     UndirectedGraphNode(int x) { label = x; neighbors = new ArrayList<UndirectedGraphNode>(); } * }; */public class Solution {            public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {        if(node == null) return node;                HashMap<Integer, UndirectedGraphNode> cloneMap = new HashMap<>();        UndirectedGraphNode clone = new UndirectedGraphNode(node.label);                LinkedList<UndirectedGraphNode> nodeQueue = new LinkedList<>();        nodeQueue.add(node);                cloneMap.put(clone.label, clone);                while(!nodeQueue.isEmpty()){            UndirectedGraphNode top = nodeQueue.pop();            UndirectedGraphNode cloneTop = cloneMap.get(top.label);            for(UndirectedGraphNode t : top.neighbors){                UndirectedGraphNode cloneT = cloneMap.get(t.label);                if(cloneT == null){                    cloneT = new UndirectedGraphNode(t.label);                    cloneMap.put(cloneT.label, cloneT);                    nodeQueue.push(t);                }                cloneTop.neighbors.add(cloneT);            }        }        return clone;    }    }</span>


0 0
原创粉丝点击