  The classical Dirac theorem asserts that every graph $G$ on $n$ vertices with
minimum degree $\delta(G) \ge \lceil n/2 \rceil$ is Hamiltonian. The lower
bound of $\lceil n/2 \rceil$ on the minimum degree of a graph is tight. In this
paper, we extend the classical Dirac theorem to the case where $\delta(G) \ge
\lfloor n/2 \rfloor $ by identifying the only non-Hamiltonian graph families in
this case. We first present a short and simple proof. We then provide an
alternative proof that is constructive and self-contained. Consequently, we
provide a polynomial-time algorithm that constructs a Hamiltonian cycle, if
exists, of a graph $G$ with $\delta(G) \ge \lfloor n/2 \rfloor$, or determines
that the graph is non-Hamiltonian. Finally, we present a self-contained proof
for our algorithm which provides insight into the structure of Hamiltonian
cycles when $\delta(G) \ge \lfloor n/2 \rfloor$ and is promising for extending
the results of this paper to the cases with smaller degree bounds.
