@Override
	public T next() {
		final Iterator<T> it = _queue.peek();
		if (it == null) {
			throw new NoSuchElementException("No next element.");
		}

		final T node = it.next();
		if (!it.hasNext()) {
			_queue.poll();
		}

		final Iterator<T> children = node.childIterator();
		if (children.hasNext()) {
			_queue.add(children);
		}

		return node;
	}
Create a new breath-first iterator from the given {@code root} element.

@param root the root element of the tree
@throws NullPointerException if the given {@code root} node is
        {@code null}
jenetics.ext/src/main/java/io/jenetics/ext/util/TreeNodeBreadthFirstIterator.java