無向グラフを複製します。グラフ内の各ノードはitsneighborsのリストをalabeland含まれています。OJの無向グラフのシリアル化:ノードが一意にラベル付けされています。我々は、各ノードのためのセパレータとして#を使用します

/ ** 
 *無向グラフの定義。
 *クラス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と、
    } 
}

 

おすすめ

転載: www.cnblogs.com/q-1993/p/11332560.html