breadth-first traversal