14/06/2018, 19:23
|
| | | Fecha de Ingreso: abril-2011 Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 8 meses Puntos: 6 | |
Respuesta: Balanceos con Árboles Hash Hola FuzzyLog gracias por responder y le diste al blanco, verás uso este código para probar:
Código Java:
Ver originalprivate static void insertAllWithClass(){ Persona p1 = new Persona(Persona.getMaxId(), "Juan", 56); Persona.maxIdUp(); Persona p2 = new Persona(Persona.getMaxId(), "Alberto", 73); Persona.maxIdUp(); Persona p3 = new Persona(Persona.getMaxId(), "Julia", 62); Persona.maxIdUp(); Persona p4 = new Persona(Persona.getMaxId(), "Luis", 71); Persona.maxIdUp(); Persona p5 = new Persona(Persona.getMaxId(), "Maria", 18); Persona.maxIdUp(); MyTreeMap <Integer,Persona > map = new MyTreeMap (); map.put(p1.getId(), p1); map.put(p2.getId(), p2); map.put(p3.getId(), p3); map.put(p4.getId(), p4); map.put(p5.getId(), p5); MyTreeMap <Integer,Persona > map2 = new MyTreeMap (map ); System. out. println("* tamaño mapa 1: " + map. size()); System. out. println("* tamaño mapa 2: " + map2. size()); }
Cuando inserto 2, pasa esto: Cita: * tamaño mapa 1: 2
[2 -> Persona{2, Nombre: Alberto, Edad: 73}]
[1 -> Persona{1, Nombre: Juan, Edad: 56}]
* tamaño mapa 2: 2
[2 -> Persona{2, Nombre: Alberto, Edad: 73}]
[1 -> Persona{1, Nombre: Juan, Edad: 56}] Cuando son 3: Cita: * tamaño mapa 1: 3
[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: 3
[3 -> Persona{3, Nombre: Julia, Edad: 62}]
[2 -> Persona{2, Nombre: Alberto, Edad: 73}]
[1 -> Persona{1, Nombre: Juan, Edad: 56}] Hasta 4 funciona bien: Cita: * tamaño mapa 1: 4
[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: 4
[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}] De 5 en adelante es el problema y el rotateLeft es el que me está complicando:
Código Java:
Ver originalprivate void rotateLeft(Entry<K,V> p) { if(p != null){ Entry<K,V> r = p.right; p.right = r.left; // esta es la línea del problema if (r.left != null) r.left.parent = p; r.parent = p.parent; if (p.parent == null) { root = (Entry)r; } else if (p == p.parent.left) { p.parent.left = r; } else { p.parent.right = r; } r.left = p; p.parent = r; } }
¿cómo lo soluciono?
Espero sus respuestas y saludos.
__________________ Si te interesa, visita mi perfil de Linkedin. Gracias
Última edición por detective_jd; 14/06/2018 a las 20:26 |