Insertar en un arbol AVL sin recursividad.

Peinacabras

Buenas, alguien me puede dar una idea de como quitar la recursividad de esta función de inserción

eq insertar(R, crear) == arbolBin(R, crear, crear) .
        ceq insertar(R1, arbolBin(R2, I, D)) ==
if (R1==R2) then
                        arbolBin(R2, I, D)
                elseif (R1<R2) then
                        if ( (altura(insertar(R1,I)) – altura(D)) < 2) then
                                arbolBin(R2, insertar(R1, I), D)
                        else ***hay que reequilibrar
                                if (R1 < raíz(I)) then
                                        rotarDer(arbolBin(R2, insertar(R1, I), D))
                                else
                                        rotarDer(arbolBin(R2, rotarIzq(insertar(R1, I)), D))
                                fi .
                        fi .
                else
                        if ( (altura(insertar(R1,I)) – altura(D)) < 2) then
                                arbolBin(R2, insertar(R1, I), D)
                        else *** hay que reequilibrar
                                if (R1 > raíz(D)) then
                                        rotarIzq(arbolBin(R, I, insertar(R1, D)))
                                else
                                        rotatIzq(arbolBin(R, I, rotarDer(insertar(R1, D))))
                                fi .
                        fi .
                fi .

Gracias y un saludo.

Usuarios habituales

  • Peinacabras