2016-04-09 18 views
1

特定のノードに隣接するすべてのノードを取得し、それらをトラバースしてリストに格納しようとしています。私は自分の方法でどこが間違っているのか分かりません(エラーは返されません)。あなたがして、リストを返すことになるためのループ内からリストを作成し、戻ってきているあなたの方法では特定のノードに接続されているすべてのノードのインデックスを取得する

public List<Integer> getNodes(int i){ 

    for (int j = 0; j < nodes.length; j++) { 
     List<String> list = new ArrayList<String>(); 
     if(adjacency[j][i]) { 
      list.add(j); 
     } 
    } 
    return list; 
} 
+0

私の答えは、あなたがあなたの問題を解決する助けている場合、あなたはそれをupvoteしていただけますか? –

答えて

1

、:私は問題を抱えています方法は次のコードの一番下にあるgetNodes(int i)です1つの要素のみ、または隣接しない場合はnullを返します。

以下のコードを変更すると、隣接する要素のリストが返されます。または、ノードに隣接する要素がない場合、リストはnullではなく空になります。

0

コードにはいくつかの問題があります。

あなたが言及した問題の原因となっている最初のものは、常に1つの要素が最大のリストを返すという事実です。

public List<Integer> getAdjacentNodes(int i) { 
    List<Integer> list = new ArrayList<Integer>(); 
    for (int j = 0; j < nodes.length; j++) { 
     if(adjacencyMatrix[j][i]) 
      list.add(j); 
    } 
    return list; 
} 

しかし、あなたはまたadjacencyMatrix[i][j]のテストを検討するかもしれない:ここでは

あなたがgetAdjacentNodes機能を書き換える必要がある方法です。あなたの行列が対称であるかどうか、または両方向のエッジを取得したいかどうかは、getAdjacentNodesであるかどうかは不明です。あなたのコード内

その他の問題:

  • addEdge(int, int)edgeFrom
  • あなたの関数getNodeIndexための対称性についても同じことが間違っている(とも役に立たない)である
関連する問題