题目描述(中等难度)
复制一个图,图的节点定义如下。
是一个装 Node
的 list
,因为对象的话,java
变量都存储的是引用,所以复制的话要新 new
一个 Node
放到 neighbors
。
思路分析
这个题其实就是对图进行一个遍历,通过 或者 DFS
。需要解决的问题就是怎么添加当前节点的 neighbors
,因为遍历当前节点的时候,它的邻居节点可能还没有生成。
解法一 BFS
先来一个简单粗暴的想法。
然后再对图做一个 ,因为此时所有的节点已经创建了,只需要更新所有节点的 neighbors
。
当然再仔细思考一下,其实我们不需要两次 BFS
。
我们要解决的问题是遍历当前节点的时候,邻居节点没有生成,那么我们可以一边遍历一边生成邻居节点,就可以同时更新 neighbors
了。
同样需要一个 map
记录已经生成的节点。
解法二 DFS
总
这道题本质上就是对图的遍历,只要想到用 去存储已经生成的节点,题目基本上就解决了。
添加好友一起进步~
如果觉得有帮助的话,可以点击 这里 给一个 star 哦 ^^