I came up with a proof of
Graph $G$ has no cycles of odd length $\implies$ $G$ is bipartite.
like this:
Without loss of generality, let's only consider a connected component, because if every connected component of a graph is bipartite, then the whole graph is bipartite.
Pick up a random vertex $v$ in $G$, calculate the length of the shortest simple path from $v$ to any other node, call this value distance from $v$, and divide nodes into 2 groups according to the parity of their distance to $v$. If we can prove that nodes belong to the same group can not be adjacent, then we know that we actually get a partition of the $G$ that fulfill the definition of bipartite graph.
Now, to introduce contradiction, assume two nodes $x, y$ with both even or odd distance from $v$ are adjacent, then the shortest simple path $\langle v, x \rangle$, $\langle v, y \rangle$ and edge $\{x, y\}$ contains a cycle with odd length, which is contradictory to that $G$ has no cycles of odd length. In other words, nodes both with even or odd distance from $v$ can not be adjacent, which is exactly what we need.
So my question is, is my proof correct? And is there simpler method to prove the proposition?
Edit:
(to address comment from Srivatsan Narayanan)
To prove that $\langle v, x \rangle$ and $\langle v, y \rangle$, together with $\langle x, y \rangle$ contains a cycle with odd length is obvious when $\langle v, x \rangle$ and $\langle v, y\rangle$ are disjoint. When that's not the case, let's give the last node shared by $\langle v, x\rangle$ and $\langle v, y\rangle$ the name v'. So the three nodes v', x, y forms a cycle with length $\newcommand{\len}{\operatorname{len}}$
L = \len(\langle v', x \rangle) + \len(\langle v', y \rangle) + 1 = \len(\langle v, x \rangle) + \len( \langle v, y \rangle) - 2 \cdot \len(\langle v, v'\rangle) + 1 .
where $\len()$ means the length of the shortest path.
As $\len(\langle v, x \rangle)$ and $\len(\langle v , y \rangle)$ are both even or odd, then $L$ must be odd. Therefore, in both cases, disjoint or not, $\langle v, x \rangle$, $\langle v, y \rangle$ and $\langle x, y\rangle$ contains a cycle with odd length.
Edit2
To see \len(\langle v, x \rangle) = \len(\langle v, v'\rangle) + \len(\langle v', x \rangle), we can simply prove that both \langle v, v' \rangle and \langle v', x \rangle are both shortest path. And that's obvious, because if it's not the case, there exist a path shorter than \langle v, v' \rangle from $v$ to v', or there exist a path shorter than \langle v', x\rangle from v' to $x$, then $\langle v, x \rangle$ can not be a shortest path.