clone-graph
来源:互联网 发布:美国特效软件 编辑:程序博客网 时间:2024/05/30 20:09
题目描述
Clone an undirected graph. Each node in the graph contains alabeland a list of itsneighbors.
解决思路
利用BFS,访问图中节点时,如果该节点没有被访问过,将其加入到map集合中并入队,并复制邻居关系,如果该节点已经被访问过,则只需要复制邻居节点即可。
java实现
class UndirectedGraphNode { int label; ArrayList<UndirectedGraphNode> neighbors; UndirectedGraphNode(int x) { label = x; neighbors = new ArrayList<UndirectedGraphNode>(); }};public class Solution { // BFS public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) { if (node == null) return null; UndirectedGraphNode clone = new UndirectedGraphNode(node.label); // hashmap存放克隆的节点 HashMap<Integer, UndirectedGraphNode> map = new HashMap<Integer, UndirectedGraphNode>(); map.put(node.label, clone); LinkedList<UndirectedGraphNode> q = new LinkedList<UndirectedGraphNode>(); q.add(node); while (!q.isEmpty()) { UndirectedGraphNode originalnode = q.remove(); UndirectedGraphNode clonenode = map.get(originalnode.label); for (UndirectedGraphNode neighbornode : originalnode.neighbors) { // 邻居节点已经克隆过,只需要复制邻居关系 if (map.get(neighbornode.label) != null) { clonenode.neighbors.add(map.get(neighbornode.label)); continue; } q.add(neighbornode); UndirectedGraphNode newnode = new UndirectedGraphNode(neighbornode.label); map.put(newnode.label, newnode); clonenode.neighbors.add(newnode); } } return clone; }}
0 0
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- javascript中JSON把字符串转化成对象,并对里面的属性增删改查
- 手动制作mac电脑的windows安装盘,不通过系统的bootcamp
- nginx配置404跳转页面
- Hbase中checkAndPut操作
- 提高自己网速的方法
- clone-graph
- 第一次总结
- 总结
- Java调用Python
- 迷宫问题
- javaweb开发中的那些坑
- 自定义View之onDraw()
- 关于集合我个人的总结和理解
- jQuery选择器