/**
********************************
* Breadth first traversal.
*
* @param paraStartIndex The start index.
* @return The sequence of the visit.
********************************
*/
public String breadthFirstTraversal(int paraStartIndex){
CircleObjectQueue tempQueue = new CircleObjectQueue();
String resultString = "";
int tempNumNodes = connectivityMatrix.getRows();
boolean[] tempVisitedArray = new boolean[tempNumNodes];
tempVisitedArray[paraStartIndex] = true;
//Initialize the queue.
//Visit before enqueue.
tempVisitedArray[paraStartIndex] = true;
resultString += paraStartIndex;
tempQueue.enqueue(new Integer(paraStartIndex));
//Now visit the rest of the graph.
int tempIndex;
Integer tempInteger = (Integer) tempQueue.dequeue();
while(tempInteger != null){
tempIndex = tempInteger.intValue();
//Enqueue all its unvisited neighbors.
for (int i = 0; i < tempNumNodes; i++) {
if(tempVisitedArray[i]){
continue;
//Already visited.
}//Of if
if (connectivityMatrix.getData()[tempIndex][i] == 0){
continue;
//Not directly connected.
}//Of if
//Visit before enqueue.
tempVisitedArray[i] = true;
resultString += i;
tempQueue.enqueue(new Integer(i));
}//Of for i
//Take out one from the head.
tempInteger = (Integer) tempQueue.dequeue();
}//Of while
return resultString;
}//Of breadthFirstTraversal
/**
********************************
* Unit test for breadthFirstTraversal.
********************************
*/
public static void breadthFirstTraversalTest(){
//Test an undirected graph.
int[][] tempMatrix = { {0, 1, 1, 0}, {1, 0, 0, 1}, {1, 0, 0, 1}, {0, 1, 1, 0} };
Graph tempGraph = new Graph(tempMatrix);
System.out.println(tempGraph);
String tempSequence = "";
try{
tempSequence = tempGraph.breadthFirstTraversal(2);
}catch (Exception ee){
System.out.println(ee);
}//Of try.
System.out.println("The breadth first order of visit: " + tempSequence);
}//Of breadthFirstTraversalTest
/**
********************************
* The entrance of the program.
*
* @param args
* Not used now.
********************************
*/
public static void main(String[] args){
Graph tempGraph = new Graph(3);
System.out.println(tempGraph);
//Unit test.
getConnectivityTest();
breadthFirstTraversalTest();
}//Of main
}//Of class Graph