本文共 1570 字,大约阅读时间需要 5 分钟。
题目描述如下:
Clone an undirected graph. Each node in the graph contains a label
and a list of its neighbors
.
Nodes are labeled uniquely.
We use#
as a separator for each node, and ,
as a separator for node label and each neighbor of the node. As an example, consider the serialized graph { 0,1,2#1,2#2,2}
.
The graph has a total of three nodes, and therefore contains three parts as separated by #
.
0
. Connect node 0
to both nodes 1
and 2
.1
. Connect node 1
to node 2
.2
. Connect node 2
to node 2
(itself), thus forming a self-cycle.Visually, the graph looks like the following:
1 / \ / \ 0 --- 2 / \ \_/
public class Solution { public static int cycleCount = 0; public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) { HashMap checker = new HashMap (); return cloneGraph(node, checker); } public UndirectedGraphNode cloneGraph(UndirectedGraphNode node, HashMap checker){ if(node == null) return null; if(checker.containsKey(node.label)) return checker.get(node.label); UndirectedGraphNode newNode = new UndirectedGraphNode(node.label); checker.put(node.label, newNode); for(UndirectedGraphNode n : node.neighbors){ newNode.neighbors.add(cloneGraph(n, checker)); } return newNode; }}
转载地址:http://plbvb.baihongyu.com/