2017-06-19 7 views
0

Breadth First SearchまたはBFSアルゴリズムについて学んでいました。 BFSを実装したグラフのツリー構造を表示します。今、多分私はちょうどリンクリストを使用して、異なる方法で、ツリー構造を表示することができますが、私は、ツリー構造を表示するために使用していますBFS方法を変更したいBFSトラバーサルがJavaで実行されたグラフのツリー構造を表示

上記の
public class BFS 
{ 

private Queue<Integer> queue; 

public BFS() 
{ 
    queue = new LinkedList<Integer>(); 
} 

public void bfs(int adjacency_matrix[][], int source) 
{ 
    int number_of_nodes = adjacency_matrix[source].length - 1; 

    int[] visited = new int[number_of_nodes + 1]; 
    int i, element; 

    visited[source] = 1; 
    queue.add(source); 

    while (!queue.isEmpty()) 
    { 
     element = queue.remove(); 
     i = element; 
     System.out.print(i + "\t"); 
     while (i <= number_of_nodes) 
     { 
      if (adjacency_matrix[element][i] == 1 && visited[i] == 0) 
      { 
       queue.add(i); 
       visited[i] = 1; 
      } 
      i++; 
     } 
    } 
} 

は、誰か私のBFS法ができています私は私が所望の出力を得るようにコードを作成する必要があり、正確なものを修正知らせに私を助けるのは、与えられた隣接行列は次のようであるとしましょうたとえば

{0,1,0,0,0,1,0,0 
1,0,0,0,0,0,0,0 
0,0,0,0,0,0,1,0 
0,0,0,0,0,0,1,1 
0,0,0,0,0,1,0,0 
1,0,0,0,1,0,1,0 
0,0,1,0,0,1,0,1 
0,0,0,1,0,0,0,1} 

のツリー構造このグラフはこのようになります

 A 

/ \ 

    B  F 

    / \ 

    E  G 

     / | \ 

     C H  D 
+2

たとえば、ノードに子供が10人いる場合はどうなりますか? –

+0

それは私が把握しようとしている別の問題です –

答えて

0

あなたがBFSについて説明したことは可能ですが、面倒です。ポストオーダートラバーサルまたはインオーダートラバーサルがより適切かもしれません。 hereをチェックし、どのようなものが正しいかを見てください。

関連する問題