private NodoAvl ramaDerecha(NodoAvl raiz, Comparador dt, Logical h) { NodoAvl n1; NodoAvl dr; dr = insertarAvl((NodoAvl)raiz.subarbolDcho(), dt, h); raiz.ramaDcho(dr); // regreso por los nodos del camino de búsqueda if (h.booleanValue()) { // incrementa el fe por aumentar la altura de rama izquierda switch (raiz.fe) { case 1: // aplicar rotación a la derecha n1 = (NodoAvl)raiz.subarbolDcho(); if (n1.fe == +1) { raiz = rotacionDD(raiz, n1); } else { raiz = rotacionDI(raiz, n1); } h.setLogical(false); break; case 0: raiz.fe = +1; break; case -1: raiz.fe = 0; h.setLogical(false); break; } } return(raiz); }
private NodoAvl rotacionII(NodoAvl n, NodoAvl n1) { n.ramaIzdo(n1.subarbolDcho()); n1.ramaDcho(n); // actualización de los factores de equilibrio if (n1.fe == -1) // se cumple en la inserción { n.fe = 0; n1.fe = 0; } else { n.fe = -1; n1.fe = 1; } return(n1); }