void eliminarAVL (AVL &t, int x){ if (t != NULL){ if ((*t).elem == x){ if ((*t).izq == NULL){ AVL aborrar = t; t = (*t).der; delete aborrar; }else if ((*t).der == NULL){ AVL aborrar = t; t = (*t).izq; delete aborrar; }else{ int min = minimo ((*t).der); eliminarAVL((*t).der, min); (*t).altura = max (alturaAVL((*t).der), alturaAVL((*t).izq)) + 1; int factor = alturaAVL((*t).der) - alturaAVL((*t).izq); if (factor < -1){ if (alturaAVL((*(*t).izq).der) > alturaAVL((*(*t).izq).izq)) rotarIzq((*t).izq); rotarDer(t); } } }else if ((*t).elem > x){ eliminarAVL((*t).izq, x); (*t).altura = max (alturaAVL((*t).der), alturaAVL((*t).izq)) + 1; int factor = alturaAVL((*t).der) - alturaAVL((*t).izq); if (factor > 1){ if (alturaAVL((*(*t).der).izq) > alturaAVL((*(*t).der).der)) rotarDer((*t).der); rotarIzq(t); } }else if ((*t).elem < x){ eliminarAVL((*t).der, x); (*t).altura = max (alturaAVL((*t).der), alturaAVL((*t).izq)) + 1; int factor = alturaAVL((*t).der) - alturaAVL((*t).izq); if (factor < -1){ if (alturaAVL((*(*t).izq).der) > alturaAVL((*(*t).izq).izq)) rotarIzq((*t).izq); rotarDer(t); } } } }