Hola a todos, problema resuelto resulta que le faltaba una línea al final de rotateRight:
Código Java:
Ver originalprivate void rotateRight(Entry<K,V> p) {
Entry<K,V> x = p.left;
p.left = x.right;
if (x.right != null)
x.right.parent = p;
x.parent = p.parent;
if (p.parent == null) {
root = (Entry)x;
} else if (p == p.parent.right){
p.parent.right = x;
} else {
x.parent.left = x;
}
x.right = p;
p.parent = x; //faltaba esta línea
}
Ya hice todas las pruebas y es oficial el put ya esta funciona bien, iré viendo las demás funcionalidades si alguna me falla iré pegando el grito.
Espero sus respuestas y saludos.