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