In this paper we present an efficient algorithm for the calculation of photonic crystal band structures and band structures of photonic crystal waveguides. Our method relies on the fact that the dispersion curves of the band structure are smooth functions of the quasi-momentum in the one-dimensional Brillouin zone. We show the derivation and computation of the group velocity, the group velocity dispersion, and any higher derivative of the dispersion curves. These derivatives are then employed in a Taylor expansion of the dispersion curves. We control the error of the Taylor expansion with the help of a residual estimate and introduce an adaptive scheme for the selection of nodes in the one-dimensional Brillouin zone at which we solve the underlying eigenvalue problem and compute the derivatives of the dispersion curves. These derivatives are then employed in a Taylor expansion of the dispersion curves. We control the error of the Taylor expansion with the help of a residual estimate and introduce an adaptive scheme for the selection of nodes in the one-dimensional Brillouin zone at which we solve the underlying eigenvalue problem and compute the derivatives of the dispersion curves. The proposed algorithm is not only advantageous as it decreases the computational effort to compute the band structure but also because it allows for the identification of crossings and anti-crossings of dispersion curves, respectively. This identification is not possible with the standard approach of solving the underlying eigenvalue problem at a discrete set of values of the quasi-momentum without taking the mode parity into account.