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.