“Si ayudas en la red, los demás también te ayudaran”
HOLA amigos hoy les comparto mi proyecto de árbol es un codigo un poco extenso espero y les ayude.en los comentarios vienen algunas especificaciones revisa mis otros codigos que estan en este blog espero y te puedan ayudar NO OLVIDES EN COMENTAR
AQUI el link de descarga
package arbolabel;
public class ArbolAbel {
NodoB Padre;
NodoB Raiz;
//Constructor
public ArbolAbel(){
Raiz = null;
}
//Insercion
de un elemento en el arbol
public void
insertaNodo(int Elem){
if(Raiz
== null)
Raiz
= new NodoB(Elem);
else
Raiz.insertar(Elem);
}
//Preorden Recursivo del arbol
public void preorden
(NodoB Nodo){
if(Nodo
== null)
return;
else{
System.out.print
(Nodo.dato + " ");
preorden (Nodo.Hizq);
preorden
(Nodo.Hder);
}
}
//PostOrden
recursivo del arbol
public void postOrden
(NodoB Nodo){
if(Nodo
== null)
return;
else{
postOrden
(Nodo.Hizq);
postOrden (Nodo.Hder);
System.out.print
(Nodo.dato + " ");
}
}
//Inorden
Recursivo del arbol
public void inorden
(NodoB Nodo){
if(Nodo
== null)
return;
else{
inorden
(Nodo.Hizq);
System.out.print(Nodo.dato
+ " ");
inorden (Nodo.Hder);
}
}
//cantidad
de niveles que posee el arbol
public int altura (NodoB Nodo){
if (Nodo==null)
return -1;
else
return
1+Math.max(altura(Nodo.Hizq),altura(Nodo.Hder));
}
//cantidad
de elementos que posee el arbol
public int tamaño (NodoB Nodo){
if (Nodo==null)
return 0;
else
return
1+tamaño(Nodo.Hizq)+tamaño(Nodo.Hder);
}
//Busca
un elemento en el arbol
public void buscar (int Elem, NodoB A){
if(A
== null | A.dato == Elem){
System.out.print(A.dato
+ " ");
return;
}
else{
if(Elem>A.dato)
buscar(Elem,
A.Hder);
else
buscar(
Elem, A.Hizq);
}
}
public static void main (String[]args){
ArbolAbel A = new ArbolAbel();
A.insertaNodo(1);
A.insertaNodo(3);
A.insertaNodo(2);
A.insertaNodo(23);
A.insertaNodo(24);
System.out.print("El
recorrido en Preorden es: ");
A.preorden
(A.Raiz);
System.out.println();
System.out.print("El
recorrido en Inorden es: ");
A.inorden
(A.Raiz);
System.out.println();
System.out.print("El
recorrido en Postorden es: ");
A.postOrden
(A.Raiz);
System.out.println();
System.out.println("La
altura del arbol es: " + A.altura (A.Raiz));
System.out.println("La
cantidad de \"nodos\" que posee el arbol es: " + A.tamaño(A.Raiz));
}}
Subclase
package
po1_arbol;
public class
ArbolBinarioOrdenado_2 {// se crea la clase
class Nodo
{
int info;
Nodo izq, der;
}
Nodo raiz;
int cant;
int altura;
public ArbolBinarioOrdenado_2() {// se desarrolla el constructor
raiz=null;
}
public void insertar (int info) {// metodo para inserter en forma recursivo
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) {// te dice si existen o no elemntos en el arbol
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
o datos del arbol
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 en el arbol
if (reco!=null) {
cant++;
cantidad(reco.izq);
cantidad(reco.der);
}
}
public int cantidad() {
cant=0;
cantidad(raiz);
return cant;
}
private void cantidadNodosHoja(Nodo reco) {//
te dice la cantidad de hojas que hay
if (reco!=null) {
if (reco.izq==null
&& reco.der==null)
cant++;
cantidadNodosHoja(reco.izq);
cantidadNodosHoja(reco.der);
}
}
public int cantidadNodosHoja()
{
cant=0;
cantidadNodosHoja(raiz);
return cant;
}
private void imprimirEntreConNivel (Nodo
reco,int nivel) {// imprime 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) {// retorna
la altura
if (reco != null) {
retornarAltura (reco.izq,nivel+1);
if (nivel>altura)
altura=nivel;
retornarAltura (reco.der,nivel+1);
}
}
public
int retornarAltura () {
altura=0;
retornarAltura (raiz,1);
return altura;
}
public void mayorValorl() {// retorna el valor mayor del arbol
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() {// retorna el valor menor del arbol
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;
}
}
}
}