nuestras visitas

Mostrando las entradas con la etiqueta propiedades de los arboles. Mostrar todas las entradas
Mostrando las entradas con la etiqueta propiedades de los arboles. Mostrar todas las entradas

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.