"La imaginación es más importante que el conocimiento. El conocimiento es ilimitado, mientras que la imaginación no" -- Albert Einstein
hola como estan amigos en esta ocacion les comparto un proyecto que desarrolle y es la clase arbol que vi en la materia de ESTRUCTURAS DE DATOS en los comentarios del proyecto te daras cuenta de algunas especificaciones.
espero y te ayude y cualquier duda no olvides en comentar.....
AQUI el link de descarga NO OLVIDES DARLE LIKE
package
po1_arbol;
public class
PO1_ARBOL { //se
crea la clase
public static void main(String[] args) {
ArbolBinarioOrdenado_2 abo = new
ArbolBinarioOrdenado_2();
abo.insertar (100); // datos insertados
abo.insertar (50);
abo.insertar (25);
abo.insertar (75);
abo.insertar (150);
System.out.println ("Impresion
entreorden: ");// imprime el pre-orden
abo.imprimirEntre ();
//te dice la cantidad de nodos del árbol
System.out.println ("Cantidad de
nodos del árbol:"+abo.cantidad());
// cuenta las hojas
System.out.println ("Cantidad de
nodos hoja:"+abo.cantidadNodosHoja());
System.out.println ("Impresion en
entre orden junto al nivel del nodo.");
abo.imprimirEntreConNivel();// saca el nivel
System.out.print ("Artura del
arbol:");// desarrolla la altura
System.out.println(abo.retornarAltura()); // retorna
la altura
abo.mayorValorl();
abo.borrarMenor();
System.out.println("Luego de
borrar el menor:");
abo.imprimirEntre ();
}
}
Subclase
package
po1_arbol;
public class
ArbolBinarioOrdenado_2 {// subclase árbol
class Nodo// se
desarrolla un nodo
{
int info;
Nodo izq, der;
}
Nodo raiz;// se
declaran las respectivas variables
int cant;
int altura;
public ArbolBinarioOrdenado_2() {// este método sirve para ordenarlo
raiz=null;
}
public
void insertar (int info) {// este metodo lo inserta
if (!existe(info)) {
Nodo nuevo;
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;
}
}
}
public boolean existe(int info) {// aquí te dice si existe o no algún elemento
Nodo reco=raiz;
while (reco!=null) {
if (info==reco.info)
return true;
else
if
(info>reco.info)
reco=reco.der;
else
reco=reco.izq;
}
return false;
}
private void imprimirEntre (Nodo reco) {// imprime los nodos
if (reco !=
null) {
imprimirEntre (reco.izq);
System.out.print(reco.info + " ");
imprimirEntre (reco.der);
}
}
public void imprimirEntre () {
imprimirEntre (raiz);
System.out.println();
}
private void cantidad(Nodo reco) {// te dice la cantidad de nodos que hay
if (reco!=null) {
cant++;
cantidad(reco.izq);
cantidad(reco.der);
}
}
public int cantidad() {
cant=0;
cantidad(raiz);
return cant;
}
private void cantidadNodosHoja(Nodo reco) {//
método para retornar los nodos de las hojas
if (reco!=null) {
if (reco.izq==null
&& reco.der==null)
cant++;
cantidadNodosHoja(reco.izq);
cantidadNodosHoja(reco.der);
}
}
public int cantidadNodosHoja() {// te dice la cantidad de las hojas
cant=0;
cantidadNodosHoja(raiz);
return cant;
}
private void imprimirEntreConNivel (Nodo
reco,int nivel) {// método para imprimir el nivel
if (reco != null) {
imprimirEntreConNivel
(reco.izq,nivel+1);
System.out.print(reco.info
+ " ("+nivel+") - ");
imprimirEntreConNivel (reco.der,nivel+1);
}
}
public void imprimirEntreConNivel () {
imprimirEntreConNivel
(raiz,1);
System.out.println();
}
private void retornarAltura (Nodo reco,int
nivel) {//
método para retornar la altura
if (reco != null) {
retornarAltura (reco.izq,nivel+1);
if (nivel>altura)
altura=nivel;
retornarAltura (reco.der,nivel+1);
}
}
public
int retornarAltura () {// retorna la altura
altura=0;
retornarAltura (raiz,1);
return altura;
}
public void mayorValorl() {// te dice cual es el mayor
if (raiz!=null) {
Nodo reco=raiz;
while (reco.der!=null)
reco=reco.der;
System.out.println("Mayor valor del
árbol:"+reco.info);
}
}
public void borrarMenor() {// borra el dato menor
if (raiz!=null) {
if (raiz.izq==null)
raiz=raiz.der;
else {
Nodo atras=raiz;
Nodo reco=raiz.izq;
while (reco.izq!=null) {
atras=reco;
reco=reco.izq;
}
atras.izq=reco.der;
}
}
}
}
No hay comentarios:
Publicar un comentario