ordnivel.pas

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

  Imprime el orden de nivel de un arbol ordenado.
  Utiliza una cola auxiliar para construir el orden
  de nivel. keywords: arbol orientado, cola

FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $ Id: ordnivel.pas  2002/04/05 15:40 mstorti Exp jdelia  $}
program ordnivel;
uses u_arbori, u_colaai;
type
  bosque = bosque_arbori ;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure ORDEN_DE_NIVEL (n: curs_nodo; A: bosque);
var
  n1 : curs_nodo;
  C  : ColaAi;
begin
  if (n = Lambda) then exit ;
  C.ANULA;
  C.PONE (n);
  writeln (A.ETIQUETA (n));
  while (NOT C.VACIA) do begin
    n1 := C.FRENTE;
    C.QUITA;
    n1 := A.HIJO_MAS_IZQ (n1);
    while (n1 <> Lambda) do begin
      writeln (A.ETIQUETA (n1));
      C.PONE (n1);
      n1 := A.HERMANO_DER (n1);
    end; {while}
  end; {while}
end;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
var
  bos               : array [1..100] of curs_nodo;
  arbol             : curs_nodo;
  prof_list, nodos  : integer;
   A                : bosque ;
begin
   A.INICIALIZA_NODOS;

   bos[1]  := A.CREA0  (33);
   bos[2]  := A.CREA0   (8);
   bos[3]  := A.CREA0   (7);
   bos[4]  := A.CREA0  (62);
   bos[5]  := A.CREA0 (130);
   bos[6]  := A.CREA0  (12);
   bos[7]  := A.CREA3 ( 41, bos [2], bos [3], bos[4]);
   bos[8]  := A.CREA2 ( 63, bos [1], bos [7]);
   bos[9]  := A.CREA0  (48);
   bos[10] := A.CREA2 (125, bos [5], bos [6]);

   arbol := A.CREA3 (142, bos [8], bos [9], bos [10]);

   ORDEN_DE_NIVEL (arbol, A);
   writeln;
   ORDEN_DE_NIVEL (bos [7], A);

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

Generated by GNU enscript 1.6.1.