/** * */ package dataStructures; /** * @author Ricardo Gaspar Nr. 35277 * @author Hugo Ant—nio Nr. 34334 Turno P2 Docente Vasco Amaral */ public class BSTBreadthFirstIterator implements Iterator> { /** * */ private static final long serialVersionUID = 1L; protected BSTNode root; protected Queue> q; /** * */ public BSTBreadthFirstIterator(BSTNode root) { this.root = root; rewind(); } @Override public boolean hasNext() { return !q.isEmpty(); } @Override public Entry next() throws NoSuchElementException { if (!hasNext()) throw new NoSuchElementException(); BSTNode node = q.dequeue(); enqueueNode(node.getLeft()); enqueueNode(node.getRight()); return node.getEntry(); } @Override public void rewind() { q = new QueueInList>(); q.enqueue(root); } /** * Adiciona um dado n— ˆ fila. * * @param node * N— a adicionar. */ private void enqueueNode(BSTNode node) { if (node != null) q.enqueue(node); } }