/ ** *無向グラフの定義。 *クラスUndirectedGraphNode { * int型のラベル。 *のArrayList <UndirectedGraphNode>隣人。 * UndirectedGraphNode(INT X){ラベル= X。隣人=新しいのArrayList <UndirectedGraphNode>(); } *}。 * / インポート java.utilの。* ; パブリック クラスソリューション{ 公共UndirectedGraphNode cloneGraph(UndirectedGraphNodeノード){ 場合(ノード== NULL ){ 戻り ヌル。 } 地図 <UndirectedGraphNode、UndirectedGraphNode>マップ= 新しいですHashMapの<UndirectedGraphNode、UndirectedGraphNode> (); 戻りクローン(ノード、マップ) } パブリック UndirectedGraphNodeクローン(UndirectedGraphNodeノードマップ<UndirectedGraphNode、UndirectedGraphNode> マップ){ 場合(ノード== NULL ){ 戻り ヌル。 } であれば(map.containsKey(ノード)){ 戻りmap.get(ノード)。 } UndirectedGraphNode newNode = 新しいUndirectedGraphNode(node.label)。 map.put(ノード、newNode)。 用 {(node.neighbors UndirectedGraphNode N) newNode.neighbors.add(クローン(N、マップ))。 } 戻りnewNodeと、 } }