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.