Escolar Documentos
Profissional Documentos
Cultura Documentos
Com partir 0
Ms
Siguiente blog
Crear blog
Acceder
estructura
lunes, 25 de julio de 2011 Seguidores
Participar en este sitio
Google Friend Connect
Miembros (1)
Archivo del blog 2011 (14) diciembre (2) noviembre (1) octubre (2) julio (4) grafos y arboles en java COLAS EN JAVA Y PROYECTOSD E AUTOS CHUTOS EN JAVA LISTAS DOBLEMENTE ENLAZADAS Y PILAS EN JAVA LISTAS SIMPLES EN JAVA mayo (2)
Definicion de Arbol Un arbol es un conjunto finito de 0 o mas nodos v1,v2,...,vn tales que: 1- existe un nodo el cual se distingue de los demas, al mismo lo vamos llamar raiz 2- los demas elementos del conjuntos quedan particionados en m>=0 conjuntos disjuntos T1,T2,...,TN los cuales son arboles. los elementos T1,T2,...,TN son llamados subarboles. Vemos aqui la naturaleza recursiva de la estructura arbol, puesto que definimos arbol en termino de arboles.
juniorborches.blogspot.mx/2011/07/grafos-y-arboles-en-java.html
1/8
28/10/13
existen ramificaciones de entrada hacia el.
-El grado interior del nodo raiz es nulo, esto quiere decir que no
-Los nodos que tienen grado exterior=0 se dicen que son nodos hojas de un arbol. -Se dice que un arbol esta en niveles, los cuales estan determinados por la longuitud de la trayectoria desde la raiz hacia dicho nodo.
-El peso de un arbol esta determinado por el numero de nodos hojas -La altura de un arbol es 1 mas el el mayor nivel de nodos -Un conjunto de arboles enraizados se dice que forman un bosque.
Arboles Binarios Un arbol binario es un caso especial de arboles generales. Es un conjunto finito de 0 nodos, o mas que tienen un subconjunto disjunto de 2 nodos, uno denominado subarbol derecho y otro subarbol izquierdo.
[+] convertir Arboles Generales a Arboles binarios Esto se realiza obviamente porque es mas facil representar arboles binarios que arboles generales, debido a que la cantidad de apuntadores predecibles son 2: subarbol derecho y subarbol izquierdo. El algoritmo que permite realizar esta operacion de conversion, o transformacion es el siguiente: 1- insertar aristas uniendo los nodos hermanos y eliminar aquellas aristas que unen a los nodos hijos con su padre, excepto el de mas a la izquierda. 2- girar este arbol aproximadamente unos 45 para distinguir los subarboles derecho e izquierdo.
Representacion de un arbol Un arbol se lo puede representar mediante la implementacion dinamica de memoria, esto es utilizando listas encadenadas o ligadas. cada nodo va a tener la siguiente configuacion: |PI|INFO|PD| donde PI: apunta hacia el nodo izquierdo (subarbol izquierdo) de ese nodo INFO: es el campo donde se almacena la informacion PD: apunta hacia el nodo derecho (subarbol derecho)de ese nodo.
juniorborches.blogspot.mx/2011/07/grafos-y-arboles-en-java.html
2/8
28/10/13
CLASE NODO
public class Nodo { private Nodo pd; private Object dato; private Nodo pi; public Nodo(Object dato){ this.dato=dato; pd=null; pi=null; } public Object getDato() {return dato;} public void setDato(Object dato) {this.dato = dato;} public Nodo getPd() {return pd;} public void setPd(Nodo pd) {this.pd = pd;} public Nodo getPi() {return pi;} public void setPi(Nodo pi) {this.pi = pi;} } CLASE ARBOL public class Arbol { private Nodo Raiz; public Arbol(){ Raiz=null;} // insertar(Raiz, Raiz, x)
public void insertar(Nodo ant, Nodo p, Nodo x){ if (p != null){ if (Integer.parseInt(x.getDato().toString()) > Integer.parseInt(p.getDato().toString())) { insertar(p, p.getPd(), x); }else{
juniorborches.blogspot.mx/2011/07/grafos-y-arboles-en-java.html
3/8
28/10/13
insertar(p, p.getPi(), x); } }else{ if (arbolVacio()){ Raiz = x; }else{ if (Integer.parseInt(x.getDato().toString()) > Integer.parseInt(ant.getDato().toString())) { ant.setPd(x); }else { ant.setPi(x); } } } } public void imprimir(Nodo p){ if(p != null){ imprimir(p.getPi()); System.out.print(p.getDato()+"; "); imprimir(p.getPd()); } } public Nodo getRaiz() { return Raiz; } public void setRaiz(Nodo raiz) { Raiz = raiz; }
public void eliminar(Nodo ant, Nodo p){ if(esNodoHoja(p)){ eliminarNodoHoja(ant, p); }else{ if (esNodoCon2SubArboles(p)){ eliminarNodoCon2SubArboles(ant, p); }else{ eliminarNodoCon1SubArnol(ant, p); } } } public void eliminarNodoHoja(Nodo ant, Nodo p){ if (Raiz != p){ if(ant.getPd() == p){ ant.setPd(null); }else{ ant.setPi(null); } }else{ Raiz = null; } }
public void eliminarNodoCon1SubArnol(Nodo ant, Nodo p){ if (Raiz == p){ if(p.getPd() != null){ Raiz = Raiz.getPd(); }else{ Raiz = Raiz.getPi(); } }else{ if ( ant.getPd() == p){ if(p.getPd() != null){ ant.setPd(p.getPd()); }else{ ant.setPd(p.getPi()); } }else{ if(p.getPd() != null){
juniorborches.blogspot.mx/2011/07/grafos-y-arboles-en-java.html
4/8
28/10/13
ant.setPi(p.getPd()); }else{ ant.setPi(p.getPi()); } } } }
public boolean esNodoHoja(Nodo p){return (p.getPi() == null && p.getPd() == null);} public boolean esNodoCon2SubArboles(Nodo p){return (p.getPi() != null && p.getPd() != null);} CLASE ARBOL APLICACION mport java.io.*;
public void generar()throws Exception{ // Nodo p = miArbol.getRaiz(); char op='s'; while(op !='n' && op!='N'){ System.out.println(" Ingrese elemento"); Object elem = entrada.readLine(); Nodo x = new Nodo(elem); miArbol.insertar(miArbol.getRaiz(), miArbol.getRaiz(), x); System.out.println(" Continuar enter/ n"); String opcion=entrada.readLine(); opcion=opcion.equals("")?"a":opcion; op = opcion.charAt(0); } } public void eliminarNodo()throws Exception{ // Nodo p = miArbol.getRaiz(); char op='s'; while(op !='n' && op!='N'){ System.out.println(" Ingrese elemento"); Object elem = entrada.readLine(); Nodo x=new Nodo(elem); // Buscar buscarEnElArbol(miArbol.getRaiz(), miArbol.getRaiz(), x);
juniorborches.blogspot.mx/2011/07/grafos-y-arboles-en-java.html
5/8
28/10/13
System.out.println(" Continuar enter/ n"); String opcion=entrada.readLine(); opcion=opcion.equals("")?"a":opcion; op = opcion.charAt(0); } } public void buscarEnElArbol(Nodo ant, Nodo p, Nodo x){ if(p!=null){ if(Integer.parseInt(x.getDato().toString())==Integer.parseInt(p.getDato().toStrin g())){ miArbol.eliminar(ant, p); }else{ if(Integer.parseInt(x.getDato().toString())>Integer.parseInt(p.getDato().toString ())){ buscarEnElArbol(p,p.getPd(),x); }else{ buscarEnElArbol(p,p.getPi(),x); } } } } public void imprimirArbol(){ System.out.println("====================="); System.out.println("Elementos del arbol"); miArbol.imprimir(miArbol.getRaiz()) ; System.out.println(""); System.out.println("=====================");} public void mostrarOpciones(){ System.out.println("================="); System.out.println(" Opciones de Arbol"); System.out.println("1- Generar"); System.out.println("2- Eliminar"); System.out.println("3- Imprimir"); System.out.println("Ingrese su opciones:"); } public void menu()throws Exception{ int op = 9; do{ switch (op) { case 1: generar(); break; case 2: eliminarNodo(); break; case 3: imprimirArbol(); break;} mostrarOpciones(); String opc = entrada.readLine(); opc = opc.equals("")?"9":opc; op=Integer.parseInt(opc); }while(op!=0); } public static void main(String[] args)throws Exception { ArbolAplicacion mi=new ArbolAplicacion(); mi.menu(); }}
juniorborches.blogspot.mx/2011/07/grafos-y-arboles-en-java.html
6/8
28/10/13
CLASE PRINCIPAL public class Principal {
public static void main(String[] args) throws Exception { ArbolAplicacion miA=new ArbolAplicacion(); miA.menu(); }}
4 comentarios:
Rey Fernando Salcedo Padilla 24 de julio de 2012 10:03 Hola, excelente codigo y muy buen tema, mira aqui hay algo que puede servir de complemento http://usandojava.blogspot.com/2012/02/escribiendo-y-leyendo-en-un-archivo-de.html Responder
fr3z_1 21 de octubre de 2013 07:46 Consulta!!!, sera recomendable usar Java para realizar proyecto que tiene estructuras de datos como grafos, rbol B+, listas simples entre otros, en comparacin a usar programacin estructurada y programarlos con ANSI C ? Saludos! Responder
juniorborches.blogspot.mx/2011/07/grafos-y-arboles-en-java.html
7/8
28/10/13
Introduce tu comentario...
Comentar como:
Cuenta de Google
Publicar
Vista previa
Entrada ms reciente
Pgina principal
Suscribirse a: Enviar comentarios (Atom)
Entrada antigua
juniorborches.blogspot.mx/2011/07/grafos-y-arboles-en-java.html
8/8