8
« en: 31 de Octubre 2014, 03:27 »
De esta forma voy bien?
public class ArbolBinario {
class Nodo
{
private int dato;
private Nodo izq, der;
public Nodo(int dato, Nodo izq, Nodo der) {
this.dato = dato;
this.izq = izq;
this.der = der;
}
public int getDato() {
return dato;
}
public void setDato(int dato) {
this.dato = dato;
}
public Nodo getIzq() {
return izq;
}
public void setIzq(Nodo izq) {
this.izq = izq;
}
public Nodo getDer() {
return der;
}
public void setDer(Nodo der) {
this.der = der;
}
}
public ArbolBinario(){
raiz = null;
}
public void insertar(int info){
Nodo nuevo = new Nodo ();
nuevo.info = info;
nuevo.Izq = null;
nuevo.Der = null;
if (raiz == null)
raiz = nuevo;
else
{
Nodo anterior = null, reco;
reco = raiz;
while (reco != null)
{
anterior = reco;
if (info < reco.info)
reco = reco.Izq;
else
reco = reco.Der;
}
if(info < anterior.info)
anterior.Izq = nuevo;
else
anterior.Der = nuevo;
}
}
//Para insertar nodo
public void insertardatos()
{
int cant;
int num;
System.out.print("Ingresar cantidad de nodos");
cant=Leer.datoInt();
for(int i=0;i<cant;i++)
{
System.out.print("ingrese nodo"+(i+1)+" :");
num = Leer.datoInt();
insertar(num);
}
}
//Para buscar Nodo
public String buscar(int num)
{
if(buscar(this.raiz,num)==true) return "Se encontro el numero"+num +"en el arbol";
else return "No se encontro el numero" +num +"en el arbol";
}
private boolean buscar(Nodo n, int num)
{
if(n!=null)
{
if(n.info==num) return true;
boolean bus1 = buscar(n.Izq, num);
boolean bus2 = buscar(n.Der,num);
if((bus1 == true)||(bus2 == true))return true;
}
return false;
}
//contar los nodos
public int contar()
{
int cant =contar(this.raiz);
return cant;
}
private int contar(Nodo n)
{
if (n==null) return 0;
int c1=contar(n.izq);
int c2=contar(n.der);
int c3 = c1 + c2 + 1;
return c3;
}
//metodo para eliminar
public void borrar ( int elemento)
{
raiz = borrar(this.raiz, elemento);
}
private Nodo borrar(Nodo r, int elemento){
if(r.info==elemento)
{
if(r.der == null && r.izq == null)
{
r = r.izq;
return r;
}
if(r.der == null)
{
r = r.izq;
return r;
}
if(r.izq == null){
r = r.der;
return r;
}
// caso en el que el nodo tiene dos hijos
r.info = encontrarMaximo(r.izq);
r = ajuste(r, r.izq, r);
}
if(elemento>r.info)
{
r.der = borrar(r.der, elemento);
return r;
}
r.izq = borrar(r.izq, elemento);
return r;
}