Está en la página 1de 3

Estructura de Datos

Sascha Alexander Pedersbeck Franco Pgina 1



Crear un rbol binario en Java.


Clase Nodo

class nodo
{
int dato;
nodo der;
nodo izq;
nodo(int dat)
{
this.dato=dat;
this.der=null;
this.izq=null;
}
}

Clase Arbol

public class arbol
{
nodo raiz=null;
public boolean tieneraiz()
{
if(raiz==null) return false;
else return true;
}

public arbol alta(int dat)
{
if(!tieneraiz())
{
nodo nuevo=new nodo(dat);
raiz=nuevo;
}
else
{
boolean izq;
nodo actual=raiz;
while(true)
{
if(actual.dato<dat) izq=false;
else izq=true;
if(!izq)
{
if(actual.der==null)
{
nodo nuevo=new nodo(dat);
actual.der=nuevo;
break;
}
else actual=actual.der;
}
else
{
Estructura de Datos

Sascha Alexander Pedersbeck Franco Pgina 2

if(actual.izq==null)
{
nodo nuevo=new nodo(dat);
actual.izq=nuevo;
break;
}
else actual=actual.izq;
}
}
}return this;
}

public boolean baja(int dat)
{
nodo actual=raiz, anterior=raiz, temp;
while(true)
{
if(actual==null) break;
if(actual.dato==dat) break;
anterior=actual;
if(actual.dato<dat) actual=actual.der;
else actual=actual.der;
}
if(actual==null) return false;
else
{
if(actual==raiz)
{
temp=actual.izq;
raiz=raiz.der;
anterior=raiz;
}
else
if (anterior.der == actual)
{
temp=actual.izq;
anterior=actual.der;
}
else
{
temp=actual.izq;
anterior.der=actual.izq;
}
actual=new nodo();
while(actual.izq!=null)
actual=actual.izq;
actual.izq=temp;
return true;
}
}

public void imprimirpreorden()
{
ayudantePreorden(raiz);
}

public void ayudantePreorden(nodo dat)
{
Estructura de Datos

Sascha Alexander Pedersbeck Franco Pgina 3

if(dat==null)
return;
System.out.printf("%d ",dat.dato);
ayudantePreorden(dat.der);
ayudantePreorden(dat.izq);
}

public void impririnorden(nodo dat)
{
if(dat!=null)
{
impririnorden(dat.izq);
System.out.println(" "+dat.dato);
impririnorden(dat.der);
}
}
}

Clase Main


public class Main {


public static void main(String[] args) {
java.util.Scanner leer=new java.util.Scanner(System.in);
arbol x=new arbol();
int z;
System.out.print("Ingrese el numero de Datos a capturar: ");
z=leer.nextInt();
for(int i=1; i<=z;i++){
int m;
System.out.println("Ingrese Dato "+i+": ");m=leer.nextInt();
x.alta(m);
}
System.out.println("Valores Capturados en PreOrden:");
x.imprimirpreorden();
int q;
System.out.print("\nIngrese dato a borrar: ");q=leer.nextInt();
x.baja(q);
System.out.println("\nDespues de borrar el dato "+q+" :");
x.imprimir();
}

}

También podría gustarte