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.