Myhill–Nerode equivalence classes of $\{0^n1^n \mid n \in \mathbb{N}\}$
Here is how to think of this question. The equivalence relation is determined by which extensions of the current word belong to the language. There are three cases:

The current word is not a prefix of any word in the language. This happens if either the word is not in $0^*1^*$ at all, or if it is of the form $0^n1^m$ but $m &gt; n$.
There is a unique extension of the current word which is in the language. This happens if the word is of the form $0^n1^m$ with $m \neq 0$ (and, to exclude the case above, $m \leq n$).
There are multiple extensions of the current word which are in the language. This happens for words in $0^*$.

Let us now get into more detail:

If $w = 0^n$, then we can extend $w$ to a word in the language by adding $0^m 1^{n+m}$ for arbitrary $m \in \mathbb{N}$. Note that this set of extensions is different for every $n$.
If $w = 0^n1^m$ where $0 &lt; m \leq n$ then there is a unique way to extend $w$ to a word in the language, namely by adding $1^{n-m}$.
Otherwise, $w$ cannot be extended to a word in the language.

Accordingly, the equivalence classes are:

$\{0^n\}$ for every $n \in \mathbb{N}$.
$\{0^{n+m} 1^m : m \in \mathbb{N}\}$ for every $n \in \mathbb{N}$.
Everything else.