You are on page 1of 7

Apartado 13.

3, clase rbolBinario
package arbolBinario;
public class ArbolBinario
{
protected Nodo raiz;
public ArbolBinario()
{
raiz = null;
}
public ArbolBinario(Nodo raiz)
{
this.raiz = raiz;
}
public Nodo raizArbol()
{
return raiz;
}
public boolean esVacio()
{
return raiz == null;
}
public static Nodo nuevoArbol(
Nodo raa!z"da# $b%ect dato# Nodo raa&rcha)
{
return ne' Nodo(raa!z"da# dato# raa&rcha);
}
public static void preorden(Nodo r)
{
i( (r )= null)
{
r.visitar();
preorden (r.subarbol!zdo());
preorden (r.subarbol&cho());
}
}
** +ecorrido de un ,rbol binario en inorden
public static void inorden(Nodo r)
{
i( (r )= null)
{
inorden (r.subarbol!zdo());
r.visitar();
inorden (r.subarbol&cho());
}
}
** +ecorrido de un ,rbol binario en postorden
public static void postorden(Nodo r)
{
i( (r )= null)
{
postorden (r.subarbol!zdo());
postorden (r.subarbol&cho());
r.visitar();
}
}
public static int altura(Nodo raiz)
{
i( (raiz == null)
return - ;
else
{
int altura!z = altura (raiz.subarbol!zdo());
int altura&r = altura (raiz.subarbol&cho());
i( (altura!z . altura&r)
return altura!z / 0;
else
return altura&r / 0;
}
}
public static boolean arbol1leno(Nodo raiz)
{
i( (raiz == null)
return true;
else
i( (altura(raiz.subarbol!zdo()))= altura(raiz.subarbol&cho()))
return (alse;
return arbol1leno(raiz.subarbol!zdo()) 22
arbol1leno(raiz.subarbol&cho());
}
public static int nuNodos(Nodo raiz)
{
i( (raiz == null)
return -;
else
return 0 / nuNodos(raiz.subarbol!zdo()) /
nuNodos(raiz.subarbol&cho());
}
public static ArbolBinario copiaArbol(Nodo raiz)
{
Nodo raiz3opia;
i( (raiz == null)
raiz3opia = null;
else
{
ArbolBinario izdo3opia# dcho3opia;
izdo3opia = copiaArbol(raiz.subarbol!zdo());
dcho3opia = copiaArbol(raiz.subarbol&cho());
raiz3opia = ne' Nodo(izdo3opia.raizArbol()#
raiz.valorNodo()#
dcho3opia.raizArbol());
}
return ne' ArbolBinario(raiz3opia);
}
public static
double evaluar(Nodo raiz# double45 operandos) thro's 67ception
{
double 7# 8# valor;
char ch ;
3haracter nr;
valor = -.-;
i( (raiz )= null) ** no est, vac9o
{
nr = (3haracter) raiz.valorNodo();
ch = nr.charValue();
i( (ch .= :A: 22 ch ;= :<:)
return operandos4ch = :A:5;
else
{
7 = evaluar(raiz.subarbol!zdo()# operandos);
8 = evaluar(raiz.subarbol&cho()# operandos);
s'itch (ch) {
case :/:> valor = 7 / 8;
break;
case :=:> valor = 7 = 8;
break;
case :?:> valor = 7 ? 8;
break;
case :*:> i( (8 )= -)
valor = 7*8;
else
thro' ne' 67ception(@6rror> divisiAn por -@);
break;
case :B:> valor = Cath.po'(7# 8);
}
}
}

return valor;
}
}
EJEMPLO 13.7
public static int nuNodos(Nodo raiz)
{
i( (raiz == null)
return -;
else
return 0 / nuNodos(raiz.subarbol!zdo()) /
nuNodos(raiz.subarbol&cho());
}
EJEMPLO 13.11
public Nodo buscar!terativo ($b%ect buscado)
{
3oparador dato;
boolean encontrado = (alse;
Nodo raizDub = raiz;
dato = (3oparador) buscado;
'hile ()encontrado 22 raizDub )= null)
{
i( (dato.igualEue(raizDub.valorNodo()))
encontrado = true;
else i( (dato.enorEue(raizDub.valorNodo()))
raizDub = raizDub.subarbol!zdo();
else
raizDub = raizDub.subarbol&cho();
}
return raizDub;
}
EJERCICIO 13.

iport %ava.io.?;
iport arbolBinario$rdenado.?;
iport arbolBinario.?;

class 6studiante ipleents 3oparador
{
int nuCat;
Dtring nobre;
public 6studiante(Dtring n# int at)
{
nobre = n;
nuCat = at;
}
public 6studiante()
{
this(null# -);
}
public Dtring toDtring()
{
i( (nobre )= null)
return nobre / nuCat;
else
return @No asignado@;
}
public boolean enorEue($b%ect opF)
{
6studiante pF = (6studiante) opF;
return nuCat ; pF.nuCat;
}
public boolean enor!gualEue($b%ect opF)
{
6studiante pF = (6studiante) opF;
return nuCat ;= pF.nuCat;
}
public boolean a8orEue($b%ect opF)
{
6studiante pF = (6studiante) opF;
return nuCat . pF.nuCat;
}
public boolean a8or!gualEue($b%ect opF)
{
6studiante pF = (6studiante) opF;
return nuCat .= pF.nuCat;
}
public boolean igualEue($b%ect opF)
{
6studiante pF = (6studiante) opF;
return nuCat == pF.nuCat;
}
}
public class Arbol6studiante
{
public static void ain(Dtring 45 a)
{
ArbolBinarioBus"ueda ab = ne' ArbolBinarioBus"ueda();
Bu((ered+eader entrada = ne' Bu((ered+eader(
ne' !nputDtrea+eader(D8ste.in));
6studiante el;
int n;
Dtring no;
tr8 {
** De crea el ,rbol de bGs"ueda
do{
D8ste.out.print(@Nuero de atricula(- =. Hin)> @);
n = !nteger.parse!nt(entrada.read1ine());
i( (n . -)
{
D8ste.out.print(@Nobre> @);
no = entrada.read1ine();
el = ne' 6studiante(no# n);
ab.insertar(el);
}
}'hile (n )= -);
** $peraciones con el arbol
do {
D8ste.out.print(@ 0. Costrar el ,rbolIn@);
D8ste.out.print(@ F. 6liinar un estudianteIn@);
D8ste.out.print(@ J. DalirIn @);
do
n = !nteger.parse!nt(entrada.read1ine());
'hile(n ; 0 KK n . J);
i( (n == 0)
{
D8ste.out.print(@InIt6studiantes In@);
visualizar(ab.raizArbol());
}
else i( (n == F)
{
int nt;
D8ste.out.print (@Catricula> @);
nt = !nteger.parse!nt(entrada.read1ine());
tr8 {
ab.eliinar(ne' 6studiante(null#nt));
}
catch (67ception e)
{
D8ste.out.println(e);
}
}
}'hile (n )= J);
}
catch (67ception er)
{
D8ste.out.println(@6rror en el proceso del arbol> @ / er);
}
}
static void visualizar (Nodo r)
{
i( (r )= null)
{
visualizar(r.subarbol!zdo());
D8ste.out.println(r.valorNodo());
visualizar(r.subarbol&cho());
}
}
}
EJERCICIO 13.7
public static int nuNodos(Nodo raiz)
{
i( (raiz == null)
return -;
else
return 0 / nuNodos(raiz.subarbol!zdo()) /
nuNodos(raiz.subarbol&cho());
}
EJERCICIO 13.11
public Nodo buscar!terativo ($b%ect buscado)
{
3oparador dato;
boolean encontrado = (alse;
Nodo raizDub = raiz;
dato = (3oparador) buscado;
'hile ()encontrado 22 raizDub )= null)
{
i( (dato.igualEue(raizDub.valorNodo()))
encontrado = true;
else i( (dato.enorEue(raizDub.valorNodo()))
raizDub = raizDub.subarbol!zdo();
else
raizDub = raizDub.subarbol&cho();
}
return raizDub;
}

You might also like