Ejercicio 2.a I, II y III

Ejercicio 2.a I, II y III

de Thiago Caetano Acuña Vinoles -
Número de respuestas: 3

Buenas, no logro resolver el ejercicio.

Pensé en hacer algo similar a a las recorridas de preOrden, enOrden y posOrden de las diapositivas pero no supe cómo. Agradezco me puedan ayudar.

Lo que hice:

Asuman que insertarAlFinal hace lo que debería.


Lista enOrden(AB arbol, Lista nueva){
    if (arbol==NULL) {return NULL; }
    else {
        nueva = enOrden(arbol->izq, nueva);
        insertarAlFinal(arbol->elem, nueva);
        nueva = enOrden(arbol->der, nueva);
        return nueva;
    }

En respuesta a Thiago Caetano Acuña Vinoles

Re: Ejercicio 2.a I, II y III

de Amalia Lucia Balestrazzi Silveira -
Qué tal si en lugar de insertar al final usas una función que concatena? Podrías hacer algo como:

concat(enOrden(arbol->izq), nuevoNodo, enOrden(arbol->der));

donde concat toma tres argumentos y los concatena en el orden de entrada, y donde nuevoNodo es de tipo Lista y en su campo elem tiene arbol->elem.
Y preOrden y posOrden serían solo reordenar las entradas de concat.
También se puede hacer lo mismo con un concat que tome solo dos entradas:

concat(concat(entrada1, entrada2), entrada3);
En respuesta a Thiago Caetano Acuña Vinoles

Re: Ejercicio 2.a I, II y III

de Fernando Fernandez -
Hola.
Creo que habría que hacer una precisión en la especificación de esta función (la de Thiago, que inicia el hilo).
El resultado no sería el recorrido en orden de arbol, sino la concatenación de nueva y esa recorrido en orden ¿no?
Aquí nueva tiene el rol de acumulador y esta función sería una generalización (y función auxiliar en la implementación) de la función que solo tiene el árbol como parámetro.