nuestras visitas

jueves, 12 de diciembre de 2013

NODOS CORRESPONDIENTES A ARBOLES

                                       NODOS CORRESPONDIENTES A ARBOLES                                       

Los arboles representan las estructuras no lineales y dinámicas de datos más importantes en computación. Dinámicas puesto que la estructura árbol puede cambiar durante la ejecución de un programa. No lineales, puesto que a cada elemento del árbol puede seguirlo varios elementos.


CARACTERÍSTICAS Y PROPIEDADES DE LOS ARBOLES EN GENERAL:

*      Todo árbol no es vacío, tiene un único nodo raíz.
*      Un nodo X es descendiente directo de un nodo y, si el nodo X es apuntado pro el nodo Y. en este caso es común utilizar X es hijo de Y.
*      Un nodo X es antecesor directo de un nodo Y, si el nodo X apunta al nodo y. en este caso es común utilizar x es el padre de y.
*      Se dice que todos los nodos son descendientes directos (hijos) de un mismo nodo (padre), son hermanos.
*      Todo nodo no tiene ramificaciones (hijos), se conoce con el nombre de terminal u hoja.

*      Todo nodo que no es raíz, ni terminal u hoja se conoce con el nombre de interior.
a  
    A continuación presentaremos los diagramas de UML, para la clase árbol y para el nodo árbol



             PROGRAMACIÓN DE LA CLASE ÁrbolBinario EN JAVA           



public class ArbolBinario
{
 private int informacion;
 private ArbolBinario der;
 private ArbolBinario Izq;
//Constructores de la clase//...
 ArbolBinario()
 {
     Izq=null;
     der=null;
 }
 ArbolBinario(int x)
 {
 informacion=x;
 Izq=null;
 der=null;
 }
    /**
     * @return the informacion
     */
    public int getInformacion() {
        return informacion;
    }

    /**
     * @param informacion the informacion to set
     */
    public void setInformacion(int informacion) {
        this.informacion = informacion;
    }

    public ArbolBinario getDer() {
        return der;
    }

    /**
     * @param der the der to set
     */
    public void setDer(ArbolBinario der) {
        this.der = der;
    }

    /**
     * @return the Izq
     */
    public ArbolBinario getIzq() {
        return Izq;
    }

    /**
     * @param Izq the Izq to set
     */
    public void setIzq(ArbolBinario Izq) {
        this.Izq = Izq;
    }}





                                                       CLASE ÁRBOL                                   

package ArbolBusqueda;

public class Arbol 
{
 private ArbolBinario raiz;
//CONSTRUCTOR DE LA CLASE...
Arbol(){
raiz=null;    
}
public ArbolBinario getraiz(){
    return raiz;
}
public void setraiz(ArbolBinario x){
    raiz=x;
}
//METODO RECURSIVO, R ES LA RAIZ, DATO ES EL VALOR A INSERTAR
public ArbolBinario Insertar(ArbolBinario r, int dato)
{
 if(r==null){
     //CREAMOS EL NODO QUE VAMOS A INSERTAR...
     r= new ArbolBinario(dato);
 else{

  if(dato  < r.getInformacion()){
  r.setIzq(Insertar(r.getIzq(), dato));
  }
   else{
   r.setDer(Insertar(r.getDer(), dato));
  }
         
}
 return r;
}

 public String inOrden(ArbolBinario r)
     {
     String cadena=new String();
     if(r!=null){
      
      cadena=cadena + inOrden(r.getIzq());
      cadena=cadena + String.valueOf(r.getInformacion()+"  ");  
      cadena=cadena + inOrden(r.getDer());  
     }
     return cadena;
     }
 public String preOrden(ArbolBinario r)
 {
 String cadena=new String();
 if(r!=null){
 cadena=cadena + String.valueOf(r.getInformacion()+"  ");
 cadena=cadena + preOrden(r.getIzq());
 cadena=cadena + preOrden(r.getDer());
 }
 return cadena;
 }

 public String postOrden(ArbolBinario r)
 {
 String cadena=new String();
 if(r!=null){

 cadena=cadena + postOrden(r.getIzq());
 cadena=cadena + postOrden(r.getDer());
 cadena=cadena + String.valueOf(r.getInformacion()+"  ");
 }
 return cadena;
 }
}









                             CLASE PruebaArbol                              

package ArbolBusqueda;
import javax.swing.JOptionPane;
public class PruebaArboL {

public static void main(String []arg)
{
Arbol x;
x=new Arbol();
x.setraiz(x.Insertar(x.getraiz(),50));
x.setraiz(x.Insertar(x.getraiz(),150));
x.setraiz(x.Insertar(x.getraiz(),250));
x.setraiz(x.Insertar(x.getraiz(),30));
x.setraiz(x.Insertar(x.getraiz(),40));
x.setraiz(x.Insertar(x.getraiz(),55));
x.setraiz(x.Insertar(x.getraiz(),75));
x.setraiz(x.Insertar(x.getraiz(),10));
x.setraiz(x.Insertar(x.getraiz(),110));
x.setraiz(x.Insertar(x.getraiz(),88));
x.setraiz(x.Insertar(x.getraiz(),03));
x.setraiz(x.Insertar(x.getraiz(),42));
x.setraiz(x.Insertar(x.getraiz(),9));
x.setraiz(x.Insertar(x.getraiz(),15));
x.setraiz(x.Insertar(x.getraiz(),96));

JOptionPane.showMessageDialog(null,"el recorrido del arbol en inorden es:  \n  "+ x.inOrden(x.getraiz()));
JOptionPane.showMessageDialog(null,"el recorrido del arbol en preorden es:  \n  "+ x.preOrden(x.getraiz()));
JOptionPane.showMessageDialog(null,"el recorrido del arbol en postorden es:  \n  "+ x.postOrden(x.getraiz()));

}
}






            CONCLUSIÓN        

Llegamos a la conclusión que el concepto de árbol implica una estructura en la que los datos se organizan 
de modo que los elementos de información están relacionados entre sí a través de ramas. 
Un árbol consta de un conjunto finito de elementos, llamados nodos y de un conjunto finito de 
líneas dirigidas, llamadas ramas que conectan los nodos. 
Un árbol es un conjunto de uno o más nodos tales que: hay un nodo especial llamado raíz y los 
restantes se dividen en n ≥ 0 conjuntos disjuntos tal que cada uno de estos conjuntos es un árbol 
y se los conoce como árboles. 






No hay comentarios.:

Publicar un comentario