secondo me questa parte di codice non viene mai eseguita
codice:
Node temp;
temp = minValue(t.right);//--------http://www.java2blog.com/2016/04/how-to-delete-node-from-binary-search.html
           
t.setKey(temp.getKey());
t.setValue(temp.getValue());
System.out.println(t.getKey());
System.out.println(temp.getKey());
            
remove((Comparable)temp.getKey(), t.right);
}
return t;

Perché ad ogni iterazione ritorni indietro.
Se t==null return
se t.getKey() < 0 richiami ricorsivamente la funzione
se t.getKey() > 0 richiami ricorsivamente la funzione
in tutti gli altri casi
se t.right == null return qualcosa
se t.left == null return qualcosa

quindi tu non scendi mai nella funzione che ti crea il nodo.

Credo che sarebbe meglio prima studiare a fondo il sistema degli alberi binari invece che scopiazzare a dx e sx del codice che alla fine non capisci nemmeno tu.

Ciao.