code: public List<ViterbiNode> search(ViterbiLattice lattice) {
  
          ViterbiNode[][] endIndexArr = calculatePathCosts(lattice);
          LinkedList<ViterbiNode> result = backtrackBestPath(endIndexArr[0][0]);
  
          return result;
      }
docs: Find best path from input lattice.
  
  @param lattice the result of build method
  @return List of ViterbiNode which consist best path