Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- UNIT uArbolBinarioExtension;
- INTERFACE
- USES uElementoInteger, uArbolBinario, uInteger;
- {Constructoras no generadoras}
- PROCEDURE Espejo(arbolOrigen : TArbolBin; VAR arbolEspejo : TArbolBin);
- {Observadoras no selectoras}
- FUNCTION NumNodos(a : TArbolBin):integer;
- FUNCTION NumHojas(a : TArbolBin):integer;
- FUNCTION Altura(a : TArbolBin):integer;
- FUNCTION Compensado(a : TArbolBin):boolean;
- FUNCTION NivelElemento(e : TElemento; a : TArbolBin):integer;
- IMPLEMENTATION
- {Constructoras no generadoras}
- PROCEDURE Espejo(arbolOrigen : TArbolBin; VAR arbolEspejo : TArbolBin);
- VAR
- hi, hd, hie, hde : TArbolBin;
- r : TElemento;
- BEGIN
- IF (EsArbolBinVacio(arbolOrigen)) THEN
- CrearArbolBinVacio(arbolEspejo)
- ELSE BEGIN
- Raiz(arbolOrigen, r);
- HijoIzq(arbolOrigen, hi);
- HijoDch(arbolOrigen, hd);
- Espejo(hi, hie);
- Espejo(hd, hde);
- ConstruirArbolBin(arbolEspejo, hie, r, hde);
- END;
- END;
- {Observadoras no selectoras}
- FUNCTION NumNodos(a : TArbolBin):integer;
- VAR
- hi, hd : TArbolBin;
- BEGIN
- IF (EsArbolBinVacio(a)) THEN
- NumNodos := 0
- ELSE BEGIN
- HijoIzq(a, hi);
- HijoDch(a, hd);
- NumNodos := 1 + NumNodos(hi) + NumNodos(hd);
- END;
- END;
- FUNCTION NumHojas(a : TArbolBin):integer;
- VAR
- hi, hd : TArbolBin;
- BEGIN
- IF (EsArbolBinVacio(a)) THEN
- NumHojas := 0
- ELSE BEGIN
- HijoIzq(a, hi);
- HijoDch(a, hd);
- IF ((EsArbolBinVacio(hi)) AND (EsArbolBinVacio(hd))) THEN
- NumHojas := 1
- ELSE
- NumHojas := NumHojas(hi) + NumHojas(hd);
- END;
- END;
- FUNCTION Altura(a : TArbolBin):integer;
- VAR
- hi, hd : TArbolBin;
- max : integer;
- BEGIN
- IF (EsArbolBinVacio(a)) THEN
- Altura := 0
- ELSE BEGIN
- HijoIzq(a, hi);
- HijoDch(a, hd);
- Altura := 1 + Maximo(Altura(hi), Altura(hd));
- END;
- END;
- FUNCTION Compensado(a : TArbolBin):boolean;
- VAR
- hi, hd : TArbolBin;
- BEGIN
- IF (EsArbolBinVacio(a)) THEN
- Compensado := TRUE
- ELSE BEGIN
- Compensado := (NumNodos(hi) = NumNodos(hd));
- END;
- END;
- FUNCTION NivelElemento(e : TElemento; a : TArbolBin):integer;
- VAR
- r : TElemento;
- ni, nd : integer;
- hi, hd : TArbolBin;
- BEGIN
- IF (EsArbolBinVacio(a)) THEN
- NivelElemento := 0
- ELSE BEGIN
- Raiz(a, r);
- IF (SonIguales(r, e)) THEN
- NivelElemento := 1
- ELSE BEGIN
- HijoIzq(a, hi);
- HijoDch(a, hd);
- ni := NivelElemento(e, hi);
- nd := NivelElemento(e, hd);
- IF ((ni > 0) AND (nd > 0)) THEN
- NivelElemento := 1 + Minimo(ni, nd)
- ELSE BEGIN
- IF (ni > 0) THEN
- NivelElemento := 1 + ni
- ELSE
- IF (nd > 0) THEN
- NivelElemento := 1 + nd
- ELSE
- NivelElemento := 0;
- END;
- END;
- END;
- END;
- END.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement