Ето :D
IterativeWalk.java
package graph;
import java.util.Vector;
//because it can be done ;)
public class IterativeWalk {
public static void SmokeOnTheWater(SimpleGraph s){
Vector gv = new Vector();
SimpleGraph currentGraph;
int currentsize, counter=0, localcounter;
gv.add(s);
while(true){
currentsize = gv.size();
for(localcounter = counter; localcounter < currentsize; localcounter++){
currentGraph = gv.get(localcounter);
for (SimpleGraph graph : currentGraph.getChildren()) {
gv.add(graph);
}
}
counter = localcounter;
if(gv.size() == currentsize) break;
}
for (SimpleGraph simpleGraph2 : gv) {
System.out.println(simpleGraph2.getData());
}
}
public static void main(String argv[]){
//sample graph initialization
SimpleGraph sg = new SimpleGraph();//1
sg.getChildren().add(new SimpleGraph());//2
sg.getChildren().add(new SimpleGraph());//3
sg.getChildren().add(new SimpleGraph());//4
sg.getChildren().add(new SimpleGraph());//5
sg.getChildren().add(new SimpleGraph());//6
sg.getChildren().get(2).getChildren().add(new SimpleGraph());//7
sg.getChildren().get(2).getChildren().add(new SimpleGraph());//8
sg.getChildren().get(2).getChildren().add(new SimpleGraph());//9
sg.getChildren().get(2).getChildren().add(new SimpleGraph());//10
SmokeOnTheWater(sg);
}
}
------------------------------
SimpleGraph
package graph;
import java.util.ArrayList;
import java.util.List;
public class SimpleGraph {
private List children;
private Double data;
public SimpleGraph(){
this.data = java.lang.Math.random();
this.children = new ArrayList();
}
public List getChildren() {
return children;
}
public Double getData() {
return data;
}
}
------------------------------
Смятам, че заслужавам количество бира след тази обида :D