listarbo.pas
{ ppc386 -va -vh *.pas }
{ COMIENZO DE DESCRIPCION
Listado de \'arboles orientados en diferentes ordenes.
keywords: arbol orientado
FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{$ Id: listarbo.pas 2002/04/05 14:00 mstorti Exp jdelia $}
program listarbo;
uses u_arbori;
type
bosque = bosque_arbori ;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure ORD_PREV (n: curs_nodo; B: bosque);
var
c : curs_nodo;
begin
if (n <> lambda) then begin
write (B.ETIQUETA (n),' ');
c := B.HIJO_MAS_IZQ (n);
while (c <> lambda) do begin
ORD_PREV (c,B);
c := B.HERMANO_DER (c);
end; {while}
end; {if}
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure ORD_POST (n: curs_nodo; B: bosque);
var
c : curs_nodo;
begin
if (n <> lambda) then begin
c := B.HIJO_MAS_IZQ (n);
while (c <> lambda) do begin
ORD_POST (c,B);
c := B.HERMANO_DER (c);
end; {while}
write (B.ETIQUETA (n),' ');
end; {if}
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure ORD_SIM (n: curs_nodo; B: bosque);
var
c : curs_nodo;
begin
if (n <> lambda) then begin
c := B.HIJO_MAS_IZQ (n);
ORD_SIM (c, B);
write (B.ETIQUETA (n),' ');
if (c <> lambda) then begin
c := B.HERMANO_DER (c);
while (c <> lambda) do begin
ORD_SIM (c, B);
c := B.HERMANO_DER (c);
end; {while}
end; {if}
end; {if}
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
var
BB : bosque;
arbol, arb1, arb2, arb3, arb4, arb5 : curs_nodo;
arb6 , arb7, arb8, arb9, arb0 : curs_nodo;
begin
BB.INICIALIZA_NODOS;
arb1 := BB.CREA0 ( 33);
arb2 := BB.CREA0 ( 8);
arb3 := BB.CREA0 ( 7);
arb4 := BB.CREA0 ( 62);
arb5 := BB.CREA0 (130);
arb6 := BB.CREA0 ( 12);
arb7 := BB.CREA3 ( 41, arb2, arb3, arb4);
arb8 := BB.CREA2 ( 63, arb1, arb7);
arb9 := BB.CREA0 ( 48);
arb0 := BB.CREA2 (125, arb5, arb6);
arbol := BB.CREA3 (142, arb8, arb9, arb0);
writeln ;
writeln ('Listado en orden previo: ');
ORD_PREV (arbol,BB);
writeln ;
writeln ('Listado en orden posterior: ');
ORD_POST (arbol,BB);
writeln ;
writeln ('Listado en orden simetrico: ');
ORD_SIM (arbol,BB);
writeln ;
end.
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
Generated by GNU enscript 1.6.1.