[java] How does a Breadth-First Search work when looking for Shortest Path?