Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
inicio
2 3
Generar rbol NumContr ol
Recorrido s
5 4
Recorrido s
6
Regresar a Men
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
nodoDerecho.insertar(valorInse rtar);
insertarNodo inicio 8
no
nodo == null
si
fin
fin
no
nodo == null
si
si
11
fin
leerCorredor
inicio private String NumControl; private String Nombre; BufferedReader System.out.println("Teclea numero de control: "); 12
si
return false;
return true;
CODIFICACIONES
EXPLICACION
14
15
16
17