博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Clone Graph
阅读量:7067 次
发布时间:2019-06-28

本文共 2061 字,大约阅读时间需要 6 分钟。

Useful Links for Explanation: 

这道题可以用BFS和DFS。DFS比较直观,但这里先说BFS。首先要审题,这道题给的constructor是个提示,就是new UndirectedGraphNode(int x){...}。这里面就是说你可以先用label去new一个UndirectedGraphNode,但是这个时候他的neighbors list是空的,以后你要在new出新的neighbor时,要把它加到这个list里面,完成全部copy。

所以这个题的做法是

1. 用一个HashMap去存新老node对应关系。

2. 用一个Queue来记录已经visit过的老node。

3. 从给定的node出发,每一次要把queue里面第一个node取出来,依次看这个node的neibor在hash里面有没有生成对应的新neighbor node。如果hash里面有这个neighbor node,就说明这个neighbor node对应的新neighbor node已经new过(但neigbor list可能是空的)。所以要把这个对应的新node拿出来,找到它的neighbor list。然后把这个老node的neigbor对应的新的neighbor node依次加进去。如果Hash里面没有这个neighbor node,还要加三部,第一步就是把这个未处理过的node加入到Queue里面。第二步new 这个新的neighor。第三步把这个加到Hash里。

/** * Definition for undirected graph. * class UndirectedGraphNode { *     int label; *     ArrayList
neighbors; * UndirectedGraphNode(int x) { label = x; neighbors = new ArrayList
(); } * }; */public class Solution { /** * @param node: A undirected graph node * @return: A undirected graph node */ public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) { // write your code here if (node == null) { return null; } HashMap
map = new HashMap<>(); Queue
queue = new LinkedList<>(); UndirectedGraphNode head = new UndirectedGraphNode(node.label); map.put(node, head); queue.offer(node); while (!queue.isEmpty()) { UndirectedGraphNode curNode = queue.poll(); for (UndirectedGraphNode neighbor : curNode.neighbors) { if (!map.containsKey(neighbor)) { queue.offer(neighbor); UndirectedGraphNode newNeighbor = new UndirectedGraphNode(neighbor.label); map.put(neighbor, newNeighbor); } map.get(curNode).neighbors.add(map.get(neighbor)); } } return head; }}

 

转载于:https://www.cnblogs.com/codingEskimo/p/6565061.html

你可能感兴趣的文章
VsCode编辑器
查看>>
spring cloud开发、部署注意事项
查看>>
又一款基于BCH开发出来的社交软件BlockPress
查看>>
ttlsa教程系列之mongodb——(五)mongodb架构-复制原理&复制集
查看>>
虚拟主机通过修改.htaccess将入口重定向到public文件夹
查看>>
nginx快速安装
查看>>
Kinect for windows的脸部识别
查看>>
MySQL 运维笔记(一)—— 终止高负载SQL
查看>>
Carrie Higbie:数据中心的绿色布线之道
查看>>
ECS之初体验
查看>>
我的友情链接
查看>>
【风云原创】Flash技术将被Html5枪毙,Silverlight将何去何从?
查看>>
power shell测试wmi
查看>>
话里话外:成功CEO的用人之道——按需激励
查看>>
openwrt无线连接互联网的实现原理【1】
查看>>
WPS for Linux(ubuntu)字体配置(字体缺失解决办法)
查看>>
谷歌为Pwnium***竞赛再掷重金 将提供200万美元奖金
查看>>
搭建K8S高可用集群(二进制方式)
查看>>
BSON与JSON的区别
查看>>
我的友情链接
查看>>