题目描述(中等难度)

    复制一个图,图的节点定义如下。

    是一个装 Nodelist ,因为对象的话,java 变量都存储的是引用,所以复制的话要新 new 一个 Node 放到 neighbors

    思路分析

    这个题其实就是对图进行一个遍历,通过 或者 DFS。需要解决的问题就是怎么添加当前节点的 neighbors,因为遍历当前节点的时候,它的邻居节点可能还没有生成。

    解法一 BFS

    先来一个简单粗暴的想法。

    然后再对图做一个 ,因为此时所有的节点已经创建了,只需要更新所有节点的 neighbors

    当然再仔细思考一下,其实我们不需要两次 BFS

    我们要解决的问题是遍历当前节点的时候,邻居节点没有生成,那么我们可以一边遍历一边生成邻居节点,就可以同时更新 neighbors了。

    同样需要一个 map 记录已经生成的节点。

    解法二 DFS

    这道题本质上就是对图的遍历,只要想到用 去存储已经生成的节点,题目基本上就解决了。

    添加好友一起进步~

    如果觉得有帮助的话,可以点击 这里 给一个 star 哦 ^^