semej_or.pas

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

  Verificar si dos \'arboles ordenados y orientados son
  semejantes, es decir, si independientemente de sus
  contenidos, tienen la misma estructura.
  [Ejercicio tomado en el 2do parcial 2001 y en el
  recuperatorio globalizador 2-Julio-2002].
  keywords: arbol orientado

  FIN DE DESCRIPCION }

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $ Id: semej_or.pas 2002/04/05 18:10 jdelia  Exp jdelia  $ }
program semej_or;
uses u_arbori ;
type
  bosque = bosque_arbori ;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function SEMEJANTE (n1, n2: curs_nodo; B: bosque) : boolean;
var
  c1, c2: curs_nodo;
  aux   : boolean;
begin
  if      (n1 = lambda) <>  (n2 = lambda) then
    SEMEJANTE := false
  else if (n1 = lambda) and (n2 = lambda) then
    SEMEJANTE := true
  else begin
    c1 := B.HIJO_MAS_IZQ (n1);
    c2 := B.HIJO_MAS_IZQ (n2);
    while (c1 <> lambda) and (c2 <> lambda) do begin
      aux := SEMEJANTE (c1,c2,B);
      if not (aux) then begin
        SEMEJANTE := aux;
        exit;
      end; {if}
      c1 := B.HERMANO_DER (c1);
      c2 := B.HERMANO_DER (c2);
    end; {while}
    SEMEJANTE := (c1 = lambda) and (c2 = lambda);
  end; {if}
end;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
var
  BB : Bosque_ArbOrI;
  arbol , arb1 , arb2 , arb3 , arb4, arb5   : curs_nodo;
  arb6  , arb7 , arb8 , arb9 , arb0         : curs_nodo;
  arbolb, arbb1, arbb2, arbb3, arbb4, arbb5 : curs_nodo;
  arbb6 , arbb7, arbb8, arbb9, arbb0        : 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);

   arbb1  := BB.crea0  (33);
   arbb2  := BB.crea0   (8);
   arbb3  := BB.crea0   (7);
   arbb4  := BB.crea0  (62);
   arbb5  := BB.crea0 (130);
   arbb6  := BB.crea0  (12);
   arbb7  := BB.crea3  (41, arbb2, arbb3, arbb4);
   arbb8  := BB.crea2  (63, arbb1, arbb7);
   arbb9  := BB.crea0  (48);
   arbb0  := BB.crea2 (125, arbb5, arbb6);

   arbolb := BB.crea3 (142, arbb8, arbb9, arbb0);

   writeln ('semejante ? ', SEMEJANTE (arbol,  arbb1, BB));
   writeln ('semejante ? ', SEMEJANTE (arbol, arbolb, BB));
end.
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}

Generated by GNU enscript 1.6.1.