Sei sulla pagina 1di 17

INTRODUCCION El rbol es una estructura de datos muy importante en informtica y en ciencias de la computacin.

Los rboles son estructuras no lineales, al contrario que los arrays y las listas enlazadas, que constituyen estructuras lineales. Los rboles son muy utilizados en informtica para representar frmulas algebraicas como un mtodo eficiente para bsquedas grandes y complejas, y en aplicaciones diversas tales como inteligencia artificial o algoritmos de cifrado. Casi todos los sistemas operativos almacenan archivos en rboles o estructuras similares a rboles. Adems de las aplicaciones citadas, los rboles se utilizan en diseo de compiladores, proceso de texto y algoritmos de bsqueda. En esta unidad se vio el concepto de rbol general y los tipos de rboles: rbol binario.- Es un rbol con raz en el que cada nodo tiene como mximo dos hijos. rbol binario completo.- Es aquel rbol en el que cada nodo tiene cero o dos hijos, tiene una profundidad en la cual todos los hijos llenan el rbol. rbol binario distinto.- Se dice que dos rboles binarios son distintos cuando sus estructuras son diferentes no importando que coincidan en datos y en nmero de nodos rbol binario similar.- Dos rboles binarios son similares cuando sus estructuras son idnticas pero la informacin que contiene en sus nodos es diferentes. rbol binario equivalente.- Son aquellos rboles binarios que son similares y que adems los nodos contienen idntica informacin. As mismo se estudio algunas aplicaciones tpicas del diseo y construccin de rboles. OBJETIVOS Conocer las caractersticas de diferentes estructuras de datos no lineales y su implementacin en un lenguaje de programacin. Conocer la terminologa bsica relativa de rboles. Recorrer un rbol binario de tres formas diferentes. DESARROLLO 1

ALGORITMO DE LA CLASE PRINCIPAL 1. 2. 3. 4. Inicio Declarar variables _____ Desplegar Men Opcin uno, rbol, y regresar al paso 3, en caso contrario ir al paso 13 5. Opcin dos, Archivo, 6. Desplegar Submen, en caso contrario ir al paso 13 7. Opcin uno, Llenar rbol, y regresar al Submen, en caso contrario ir al paso 12 8. Opcin dos, Generar rbol NumControl, y regresar al Submen, en caso contrario ir al paso 12 9. Opcin tres, Recorridos, y regresar al Submen, en caso contrario ir al paso 12 10. Opcin cuatro, Generar rbol Nombre, y regresar al Submen, en caso contrario ir al paso 12 11. Opcin cinco, Recorridos, y regresar al Submen, en caso contrario ir al paso 12 12. Opcin seis, Regresar al Submen, en caso contrario ir al paso 13 13. Fin UML

DIAGRAMA DE FLUJO DE LA CLASE PRINCIPAL

inicio

opcion 1 rbo l 2 Archiv o opcion 1


Llenar rbol

2 3
Generar rbol NumContr ol
Recorrido s

5 4
Recorrido s

6
Regresar a Men

Generar rbol Nombre

fin

ALGORITMOS DE LOS METODOS NodoArbol 1. Inicio 2. Declarar variables NodoArbol nodoIzquierdo, int datos, NodoArbol nodoDerecho e int datosNodo 3. A datos asignar datosNodo 4. El nodo no tiene hijos 5. Fin insertar 1. Inicio 2. Declarar las variables int valorInsertar, NodoArbol nodoIzquierdo, int datos, NodoArbol nodoDerecho 3. Preguntar si valorInsertar < datos e ir al paso siguiente, en caso contrario ir al paso 6 4. Preguntar si nodoIzquierdo == null, si es as, insertar nodo 5. En caso contrario continuar recorriendo subrbol izquierdo 6. En caso contrario preguntar si valorInsertar > datos e ir al paso siguiente 7. Preguntar si nodoDerecho == null, si es as insertar nodo 8. En caso contrario continuar recorriendo subrbol derecho 9. Fin Arbol 1. 2. 3. 4. Inicio Declarar variable de tipo private NodoArbol raiz A raiz asignar null, es decir que esta vaca Fin

insertarNodo 1. Inicio 2. Declarar variables de tipo private NodoArbol raiz e int valorInsertar 3. Preguntar si raiz == null, si es as crea el nodo raz aqu 4. En caso contrario llamar al mtodo insertar 4

5. Fin recorridoPreorden 1. 2. 3. 4. Inicio Declarar variable de tipo private NodoArbol raiz Pasar raiz como argumento a ayudantePreorden Fin

ayudantePreorden 1. 2. 3. 4. Inicio Declarar la variable de tipo NodoArbol nodo Preguntar si nodo == null, ir al paso siguiente Regresar recorrido mostrar datos del nodo, subrbol izquierdo, y recorrer subrbol derecho 5. Fin recorridoInorden 1. 2. 3. 4. Inicio Declarar variable de tipo private NodoArbol raiz Pasar raiz como argumento a ayudanteInorden Fin

ayudanteInorden 1. 2. 3. 4. Inicio Declarar de tipo NodoArbol nodo Preguntar si nodo == null, ir al paso siguiente Regresar recorrer subrbol izquierdo, mostrar datos del nodo y recorrer subrbol derecho 5. Fin recorridoPostorden 1. 2. 3. 4. Inicio Declarar la variable de tipo NodoArbol nodo Pasar raiz como argumento a ayudantePostorden Fin

ayudantePostorden 1. Inicio 2. Declarar la variable de tipo NodoArbol nodo 3. Preguntar si nodo == null, ir al paso siguiente 5

4. Regresar recorrer subrbol izquierdo, recorrer subrbol derecho y mostrar datos del nodo 5. Fin leerCorredor 1. Inicio 2. Declarar de tipo private String NumControl, private String Nombre y BufferedReader entrada 3. Pedir nmero de control 4. Pedir nombre 5. Preguntar si NumControl.length() > 0 y Nombre.length() > 0, ir al paso siguiente 6. Si es as regresar verdadero 7. En caso contrario regresar falso 8. Fin escribir 1. 2. 3. 4. Inicio Declarar de tipo DataOutputStream mfa Escribir NumControl y escribir Nombre Fin

leerDisco 1. 2. 3. 4. Inicio Declarar de tipo DataInputStream fae Leer NumControl y leer Nombre Fin

DIAGRAMAS DE FLUJO DE LOS METODOS NodoArbol inicio NodoArbol nodoIzquierdo; int datos; NodoArbol nodoDerecho; datos = datosNodo; //datos asigna datosNodo nodoIzquierdo = nodoDerecho = null; fin

insertar inicio
int valorInsertar; NodoArbol nodoIzquierdo; int datos; NodoArbol

no no
if(valorInsertar > datos)

si si
if(valorInsertar < datos)

no
if(nodoIzquierdo == null)

si

no
nodoDerecho == null

si

nodoIzquierdo = new NodoArbol(valorInsertar); nodoIzquierdo.insertar(valorInsert ar);

nodoDerecho.insertar(valorInse rtar);

nodoDerecho = new NodoArbol(valorInsertar);

fin Arbol inicio private NodoArbol raiz; raiz = null; fin

insertarNodo inicio 8

private NodoArbol raiz; int valorInsertar;


no si

raiz == null raiz.insertar(valorInserta r); raiz = new NodoArbol(valorInsertar);

fin recorridoPreorden inicio private NodoArbol raiz; ayudantePreorden(rai z); fin

ayudantePreorden inicio NodoArbol nodo;

no
nodo == null

si

regresa r System.out.print(nodo.datos + " " ); ayudantePreorden(nodo.nodoIzquier do ); ayudantePreorden(nodo.nodoDerech

fin

recorridoInorden inicio private NodoArbol raiz; ayudanteInorden(raiz);

fin

ayudanteInorden inicio NodoArbol nodo; 10

no

nodo == null

si

regresa r ayudanteInorden(nodo.nodoIzquier do); System.out.print(nodo.datos + " " );

fin recorridoPostorden inicio NodoArbol nodo; ayudantePostorden(rai z); fin

ayudantePostorden inicio NodoArbol nodo;


no
nodo == null

si

11

regresa r ayudantePostorden(nodo.nodoIzquie rdo); ayudantePostorden(nodo.nodoDerec ho);

fin

leerCorredor

inicio private String NumControl; private String Nombre; BufferedReader System.out.println("Teclea numero de control: "); 12

System.out.println("Teclea el nombre: ");


no
if((NumControl.length() > 0) && (Nombre.length() > 0))

si

return false;

return true;

fin escribir inicio DataOutputStream mfa; mfa.writeUTF(NumContr ol); mfa.writeUTF(Nombre); fin

leerDisco inicio DataInputStream fae NumControl = fae.readUTF(); Nombre = fae.readUTF(); fin 13

CODIFICACIONES

EXPLICACION

14

CORRIDAS DEL PROGRAMA

15

CONCLUSION La prctica en si, resulto un poco complicada OBSERVACIONES

16

17

Potrebbero piacerti anche