Altillo.com > Exámenes > ORT > Programación II

Programación II

Examen Final

Diciembre de 1998 Altillo.com

Se cuenta con un árbol binario de búsqueda que representa los horarios de movimientos de vuelos en un aeropuerto, durante un día. El mismo está ordenado por hora de movimiento y su factibilidad es 0..2 por número de vuelo. Si el vuelo tiene dos movimientos (por ejemplo, llega al aeropuerto y parte ese mismo día), habrá dos nodos para ese vuelo pero con distinta hora; en caso de haber un solo nodo de vuelo, indica que tiene un solo movimiento para ese día (por ejemplo, el vuelo parte ese día a algún destino y vuelve otro día).

TYPE
    TY_ARBOL = ^TY_NODO;
    TY_RANGO = 100..999;
    TY_NODO = RECORD
                                HORA : String[5]; {hora de 1ero. o 2do. movimiento}
                                CIUDAD : String[20]; {ciudad de origen o de destino }
                                VUELO : TY_RANGO; {nro. de vuelo}
                                IZQ, DER : TY_ARBOL
                           END;
VAR
    AEREO : TY_ARBOL;

Se pide
A) Desarrollar un procedimiento con los parámetros necesarios y suficientes que dado un número de vuelo, devuelva los dos punteros a los nodos en dónde se encuentra si el vuelo tiene dos movimientos para ese día, o NIL en el/los que correspondan.
B) Escribir una llamada al procedimiento desarrollado en el punto A desde el programa principal y mostrar por pantalla un mensaje indicando:
· Nro. de vuelo
· Ciudad del 1er. movimiento y ciudad del 2do. Movimiento (si existe).
· Hora del 1er. movimiento y hora del 2do. movimiento (si existe).
C) ¿Cómo recorrió el árbol?
D) ¿Podría haber usado otros recorridos? Si la respuesta es afirmativa, indique cuáles.

NOTA:
* Respetar la declaración propuesta y agregar las variables globales que sean necesarias.
* Recorrer el árbol una sola vez tratando de minimizar las llamadas recursivas.

2. Dado el siguiente árbol y procedimiento:

procedure F211298 (P : PtArbB);
VAR X : PtArbB;
Begin
  if P < > NIL then begin
    X := P^.IZQ;
    P^.IZQ := P^.DER;
    P^.DER := X;
    F211298 (P^.IZQ);
    F211298 (P^.DER);
  end
End;

Se pide
a) Realizar su seguimiento cuando se lo invoca con el puntero a la raíz del árbol dado.
b) Mostrar gráficamente cómo se va modificando el árbol y en qué momento se produce cada modificación.
c) Sin volver a realizar el seguimiento, indicar cómo quedaría el árbol: