trilistado.pas

{ COMIENZO DE DESCRIPCION

El `tri-listado' de un arbol ordenado binario puede
pensarse como una combinacion de los listados previo,
posterior y simetrico. Asumamos que las etiquetas tienen
tres partes, una etiqueta `derecha', una `izquierda' y
otra 'centro', entonces el tri-listado de un nodo n se
define como:
TRI_LISTADO (n) = (ETIQ_IZQ (n), TRI_LISTADO (HIJO_IZQ (n)),
ETIQ_CENTRO (n), TRI_LISTADO (HIJO_DER(n)), ETIQ_DER (n)).
Por ejemplo, si A: 1 ( 8 ( 3 2 ) 4 ( 9 2 ) ), y tomamos como
etiqueta derecha a (100+etiqueta) y etiqueta izquierda como
(200+etiqueta), entonces debe listar (1 8 3 103 203 108 2
102 202 208 101 4 9 109 209 104 2 102 202 204 201).  Para
simplificar, en vez de tener 3 etiquetas tenemos una sola
etiqeta entera `e'. La etiqueta del centro es (100+e) y la
derecha es (200+e). Por ejemplo si la etiqueta es 11
entonces las etiquetas izquierda, centro y derecha son
[11,111,211]. [Tomado 2do parcial de 2003, 3-Jun-2003].

Keywords: arbol binario

FIN DE DESCRIPCION }

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $Id: trilistado.pas 2003/06/04 11:32 mstorti Exp jdelia $ }
program tri_listado_p;
uses u_arbbii, arbbtools;
type
   bosque = bosque_arbbii;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure TRI_LISTADO (n: curs_nodo; a: bosque);
begin
  if (n <> Lambda) then begin
    { Imprime ETIQUETA `izquierda' }
    write (a.ETIQUETA (n),' ');
    { Aplica tri_listado al hijo izquierdo }
    tri_listado (a.HIJO_IZQ(n), a);
    { Imprime ETIQUETA `centro' }
    write (100 + a.ETIQUETA (n),' ');
    { Aplica tri_listado al hijo derecho }
    tri_listado (a.HIJO_DER (n), a);
    { Imprime ETIQUETA `derecha' }
    write (200 + a.ETIQUETA (n),' ');
  end ; {if}
end ;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
var
   a : bosque;
   n : curs_nodo;
begin
   a.INICIALIZA_NODOS;
   n := crea_de_string ('1{8{3,2},4{9,2}}',a);
   write ('Tri-listado: ');
   TRI_LISTADO (n, a);
   writeln;
end.
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}

Generated by GNU enscript 1.6.1.