题目

给定一个无向图的节点,克隆能克隆的一切

思路

1--2
|
3--5

以上图为例,

node    neighbor

1         2, 3

2         1

3         1, 5

5         3

首先从1开始,  将(node,newNode)put到HashMap中

node        newNode

1                1

然后遍历该node的所有neighbor

node    neighbor

1         2, 3

此时遍历到2

将(node,newNode)put到HashMap中

node        newNode

1                1 -- 2  // newNode.neighbors.add(clone)

2               2

代码

 public class Solution {

     Map<UndirectedGraphNode, UndirectedGraphNode> map = new HashMap<>();

     public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
if (node == null) {
return null;
} //DFS
if (map.containsKey(node)) {
return map.get(node);
} UndirectedGraphNode newNode = new UndirectedGraphNode(node.label);
map.put(node, newNode);
for (UndirectedGraphNode nei : node.neighbors) {
UndirectedGraphNode clone = cloneGraph(nei);
newNode.neighbors.add(clone);
}
return newNode;
}
}

最新文章

  1. tp5 中 model 的新增方法
  2. LeetCode &quot;Design Twitter&quot;
  3. str_replace vs preg_replace
  4. C语言的执行
  5. mongodb基础系列——数据库查询数据返回前台JSP(二)
  6. httpsclient 自动获取证书 无证书访问 验证过能直接用
  7. ActivityNotFoundException: No Activity found to handle Intent
  8. [转贴]Eclipse IDE for c++配置
  9. 0301——Notification 通知
  10. JavaService实现Windows服务
  11. [收藏] Java源码阅读的真实体会
  12. 洛谷 P1055 ISBN号码【字符串+模拟】
  13. Java集合中的AbstractMap抽象类
  14. 20145237 《Java程序设计》第10周学习总结
  15. __x__(22)0907第四天__ 垂直外边距重叠
  16. calcOpticalFlowPyrLK
  17. Python人工智能之路 - 第二篇 : 算法实在太难了有现成的直接用吧
  18. npm和node的版本过低时的解决办法
  19. Java调用OCR进行图片识别
  20. 2018软工实践—Alpha冲刺(4)

热门文章

  1. cxVerticalGrid赋值是实时更新
  2. Zookeeper 在Linux系统的安装
  3. ReactiveX 学习笔记(4)过滤数据流
  4. 删除oracle数据库用户
  5. 今天折腾phantomjs+selenium的笔记
  6. JDBC有哪些接口
  7. Android中查看SQLite中字段数据的两种方式
  8. 17.嵌入ace插件
  9. 创建DLL动态链接库——声明导出法
  10. Android代码规范