public BreadthFirstSearch( DigraphIteration factory, Object firstVertex, Attribute level) { this.factory = factory; reset(firstVertex, level); }
public static boolean isTree(Digraph digraph) { Object root = null; for (Iterator i = digraph.vertexIterator(); i.hasNext(); ) { Object vertex = i.next(); int inSize = digraph.incomingSize(vertex); if (inSize == 0) { root = vertex; break; } } //not a tree - no vertex with 0 in-degree if (root == null) return false; //try to reach all vertices from the root candidate BreadthFirstSearch traversal = new BreadthFirstSearch(digraph, root); while (traversal.isValidTree() && traversal.hasNext()) traversal.next(); //not a tree - one of vertices has been seen more than once by the BFS if (!traversal.isValidTree()) return false; //has every vertex been reached? Set seenVertices = traversal.getSeenVertices(); for (Iterator i = digraph.vertexIterator(); i.hasNext(); ) if (!seenVertices.contains(i.next())) return false; //all tests are passed - good! return true; }
RectangularShape shape = (RectangularShape)vertexShape.get(root); System.out.println(root + "[" + shape.getCenterX() + "," + shape.getMinY() + "]"); BreadthFirstSearch printTraversal = new BreadthFirstSearch(digraph, root); while (printTraversal.hasNext()) { Object vertex = printTraversal.next(); for (ArcIterator i = digraph.outgoingIterator(vertex); i.hasNext(); ) { i.next();
rootBox.getHeight()); areaBounds.setFrame(rootBox.getBounds2D()); BreadthFirstSearch placeTraversal = new BreadthFirstSearch(digraph, root); while (placeTraversal.hasNext()) { Object vertex = placeTraversal.next(); Rectangle2D box = (Rectangle2D)boxMap.get(vertex); RectangularShape shape = (RectangularShape)vertexShape.get(vertex);
public BreadthFirstSearch( DigraphIteration factory, Collection firstVertices, Attribute level) { this.factory = factory; reset(firstVertices, level); }
public void reset(Object newFirstVertex, Attribute level) { reset(Collections.singletonList(newFirstVertex), level); }
public void reset(Object newFirstVertex) { reset(newFirstVertex, new ConstAttribute(new Integer(-1))); }