maxcota.pas

{ ppc386 -va -vh *.pas }
{ COMIENZO DE DESCRIPCION

Escribir una funci\'on ``function
MAXCOTA (n: nodo; A: arbol; cota: integer): integer;'' que
retorna el m\'aximo de las etiquetas de un \'arbol binario
tales que son menores o iguales que la cota c. Por ejemplo,
si las etiquetas de un \'arbol A son (1,3,7,4,2,10,13) y
cota=8, entonces MAXCOTA (raiz (A), A, 8) debe retornar 7.
keywords: arbol orientado

FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $ Id: maxcota.pas 2002/04/05  9:00 mstorti Exp jdelia   $ }
program  max_cota;
uses u_arbbii, arbbtools;
type
   bosque =  bosque_arbbii;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function MAXCOTA (A   : bosque;
                  n   : curs_nodo;
                  cota: integer): integer;
var
   r, en, max_hi, max_hd : integer;
begin
   r := 0;
   if (n <> lambda) then begin
      { Si la etiqueta del nodo esta por debajo de la cota}
      { entonces el maximo actual es la etiqueta del nodo }
      en := A.ETIQUETA (n);
      if (en <= cota) then r := en;

      { Compara con los MAXCOTA's de los hijos y actualiza }
      max_hi := MAXCOTA (A, A.HIJO_IZQ (n), cota);
      if (max_hi > r) then r := max_hi;

      max_hd := MAXCOTA (A, A.HIJO_DER (n), cota);
      if (max_hd > r) then r := max_hd;
   end; {if}
   MAXCOTA := r;
end; { MAXCOTA }

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
var
   A : bosque;
   n :  curs_nodo;
begin

   A.INICIALIZA_NODOS;
   n := CREA_DE_STRING ('9{8{3,2},4{1,2}}',A);

   writeln('MAXCOTA: ',MAXCOTA (A, n, 7));

end.
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}

Generated by GNU enscript 1.6.1.