Returns the first shortest path.
List<Node<T>> firstShortestPath() { if (isEmpty) return []; return reduce( (shortest, path) => path.length < shortest.length ? path : shortest); }