Hola FuzzyLog gracias por responder, resolví el problema del elemento que se borraba, resulta que era el put el que no funcionaba bien y logré cambiarlo:
    
Código Java:
Ver originalpublic V put(K key, V value) {
        if(key != null){
            Entry<K,V> e = new Entry(key, value);
            Entry<K,V> parent = null;
            Entry<K,V> t = root;        
            int cmp = 0;
            while (t != null) {
                parent = t;
                Comparable<? super K> k = (Comparable<? super K>) key;
                cmp = (comparator != null) ? comparator.compare(key,t.key) : k.compareTo(t.key);
                if(cmp < 0){
                    t = t.left;
                } else if(cmp > 0) {
                    t = t.right;
                } else {
                    t.value = value;
                    return value;
                } 
            }
            e.parent = parent;
            if(t == null){
                root = e;
            } else if (cmp < 0) {
                parent.left = e;
            } else {
                parent.right = e;
            }
            rbInsertFixup(e);
            size++;
        }
        return null;
    }
  
sólo que ahora me muestra así: 
 Cita:  * tamaño mapa 1: 5
[5 -> Persona{5, Nombre: Maria, Edad: 18}]
[4 -> Persona{4, Nombre: Luis, Edad: 71}]
[3 -> Persona{3, Nombre: Julia, Edad: 62}]
[2 -> Persona{2, Nombre: Alberto, Edad: 73}]
[1 -> Persona{1, Nombre: Juan, Edad: 56}]
* tamaño mapa 2: 5
[1 -> Persona{1, Nombre: Juan, Edad: 56}]
[2 -> Persona{2, Nombre: Alberto, Edad: 73}]
[3 -> Persona{3, Nombre: Julia, Edad: 62}]
[4 -> Persona{4, Nombre: Luis, Edad: 71}]
[5 -> Persona{5, Nombre: Maria, Edad: 18}]
    en el map1 me lo ordena de forma decreciente y el 2 creciente, cuando los 2 tendrían que estar creciente.
Apenas hice estos otros cambios:    
Código Java:
Ver originalprivate void rbInsertFixup(Entry<K,V> x) {
        x.color = RED;
        while (x.parent != null && x.parent.color == RED) {
            if (x.parent == x.parent.parent.left) {
                Entry<K,V> y = x.parent.parent.right;
                if (y != null && y.color == RED) {
                    x.parent.color = BLACK;
                    y.color = BLACK;
                    x.parent.parent.color = RED;
                    x = x.parent.parent;
                } else {
                    if (x == x.parent.right) {
                        x = x.parent;
                        rotateLeft(x);
                    } else {
                        x.parent.color = BLACK;
                        x.parent.parent.color = RED;
                        rotateRight(x.parent.parent);
                    }
                }
            } else {
                Entry<K,V> y = x.parent.parent.left; 
                if (y != null && y.color == RED) {
                    x.parent.color = BLACK;
                    y.color = BLACK;
                    x.parent.parent.color = RED;
                    x = x.parent.parent;
                } else {
                    if (x == x.parent.left) {
                        x = x.parent;
                        rotateRight(x);
                    } else {
                        x.parent.color = BLACK;
                        x.parent.parent.color = RED;
                        rotateLeft(x.parent.parent);
                    }
                }
            }
        }
        root.color = BLACK;
    }
    /**
     * Do a right rotation around this node.
    */
    private 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;
        x.right = p;
        p.right = x;
        if (p.parent == null) {
            root = (Entry)x;
        } else if (p == p.parent.right){ 
            p.parent.right = x;
        } else {
            x.parent.left = x;
        }        
    }
    /**
     * Do a left rotation around this node.
    */
    private void rotateLeft(Entry<K,V> p) {        
        Entry<K,V> y = p.right;
        p.right = y.left;
        if (y.left != null)
            y.left.parent = p;
        y.parent = p.parent;
        if (p.parent == null) {
            root = (Entry)y;
        } else if (p == p.parent.left) {
            p.parent.left = y;
        } else {
            p.parent.right = y;
        }
        y.left = p;
        p.parent = y; 
    }
  
Espero sus respuestas y saludos. 
PD: El toString ya no está más, desapareció.