Examen Febrero 2011 [Ej. 1 - Parte c]

Examen Febrero 2011 [Ej. 1 - Parte c]

de Usuario eliminado -
Número de respuestas: 2
Buenas , en la solución de este ejercicio , se plantea un procedimiento auxiliar que "linealiza" un ABB. como se lee en los comentarios :

(* Dado un arbol binario de busqueda abb ordenado en forma creciente
agrega al comienzo de lres todos los elementos de abb en forma creciente *)

PROCEDURE LinealizarABB(abb : CardAB; VAR lres : CardLista);
VAR
nodo : CardLista;
BEGIN
IF (abb <> NIL) THEN
LinealizarABB(abb^.der, lres);
NEW(nodo);
nodo^.elem := abb^.elem;
nodo^.sig := lres;
lres := nodo;
LinealizarABB(abb^.izq, lres);
END;
END LinealizarABB;

Mi pregunta es , si se pretende una lista ordenada en forma creciente , no se supone que primero se llame a la recursividad con el subárbol izquierdo , en lugar del derecho ?

Gracias .
En respuesta a Usuario eliminado

Re: Examen Febrero 2011 [Ej. 1 - Parte c]

de Marcel Dibot Mussini -
Sí, pero fijate que lo inserta al principio, por lo que pude ver es lo mismo que recorrer izq, nodo, der e insertar al final.

Saludos
En respuesta a Marcel Dibot Mussini

Re: Examen Febrero 2011 [Ej. 1 - Parte c]

de Usuario eliminado -
Yo leí por ahí también eso . De recorridas de "primer orden, segundo orden y tercer orden" . Pero en este caso la lista quedaría ordenada de forma decreciente ..
LinealizarABB va primero hasta el último nodo de la derecha , lo agrega y comienza de ahí para atrás .. Por lo que el primer elemento de la lista es el elemento más grande del ABB, y tiene que ser al revés ..

Saludos