for (Iterator it1 = new BreadthFirstIterator (g, root); it1.hasNext();) {
Object v1 = it1.next ();
for (Iterator it2 = g.edgesOf (v1).iterator (); it2.hasNext ();) {
Edge edge = (Edge) it2.next ();
Object v2 = edge.oppositeVertex (v1);
if (tree.getParent (v1) != v2) {
tree.addNode (v1, v2);
assert tree.getParent (v2) == v1;
}
}