0% encontró este documento útil (0 votos)
86 vistas11 páginas

Manejo de Árboles Binarios en C#

Este documento presenta un proyecto sobre el manejo de árboles binarios desarrollado por 5 estudiantes de ingeniería de sistemas de información. El proyecto incluye el desarrollo de un programa que puede realizar operaciones básicas con árboles binarios como inserción, búsqueda, eliminación y recorrido, además de proporcionar información sobre los nodos, longitud de caminos y comparar árboles. El proyecto se implementó en C# para automatizar el manejo de estructuras de datos no lineales

Cargado por

Tito Cruz
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
86 vistas11 páginas

Manejo de Árboles Binarios en C#

Este documento presenta un proyecto sobre el manejo de árboles binarios desarrollado por 5 estudiantes de ingeniería de sistemas de información. El proyecto incluye el desarrollo de un programa que puede realizar operaciones básicas con árboles binarios como inserción, búsqueda, eliminación y recorrido, además de proporcionar información sobre los nodos, longitud de caminos y comparar árboles. El proyecto se implementó en C# para automatizar el manejo de estructuras de datos no lineales

Cargado por

Tito Cruz
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Universidad Mariano Galvez de Guatemala

Centro Regional de Oriente, Cuilapa, Santa Rosa


Facultad de Ingeniería en Sistemas de Información
Curso: Programación II
Ing. José Luis Xiloj Pérez
Ciclo V Sección “A”

Estructura de datos dinámicas no lineales


Arboles Binarios

Integrantes
Luz Clarita Santos Godoy 1590-16-3357
José Manuel Contreras Molina 1590-16-3652
Yordy Stivens Ortiz Hernandez 1590-16-1846
Elmer Felipe Orellana Calderón 1590-16-1734
Keneddy Oswaldo Ixtupe Valdez 1590-16-1949

Cuilapa, Santa Rosa, 26 de mayo de 2018


TABLA DE PARTICIPACION POR INTEGRANTE:

No. Integrante Carnet Porcentaje


1 Luz Clarita Santos Godoy 1590-16-3357 20%
2 José Manuel Contreras Molina 1590-16-3652 20%
3 Jyordy Stivens Ortiz Hernández 1590-16-1846 20%
4 Elmer Felipe Orellana Calderón 1590-16-1734 20%
5 Keneddy Oswaldo Ixtupe Valdez 1590-16-1949 20%
Total 100%

PROYECTO: Manejo de estructura de datos dinámicas no lineales


– Arboles Binarios -
INFORME DE PROYECTO

TEMA:
Descripción del proyecto, objetivos, solución, conclusiones y
recomendaciones
INTRODUCCION
La evolución de la tecnología en los últimos años ha representado una gran ayuda para el ser
humano en la realización de sus tareas cotidianas, así como gran apoyo con el trabajo que se
realiza, es por eso que en este proyecto se tomó como base el manejo de estructura de datos no
lineales, ya que tiene ventajas que nos ayudan a que el desarrollo del software sea más eficiente
por su nivel de alcance y facilidad así como la característica inherente de que se pueden definir en
tiempos de ejecución y la memoria es utilizada de forma más eficiente. Principalmente este
proyecto se enfoca en el manejo de árboles binarios, el cual dentro de sus ventajas tiene que el
número de accesos al árbol es menor que en una lista enlazada la cual es menos eficiente que un
árbol ya que en término medio habrá que recorrer la mitad de la lista para verificar si un elemento
está en ella o no, es por esto que se muestran en el proyecto las principales operaciones a realizar
con los árboles.

FORMULACION DEL PROBLEMA:


Desarrollar una solución utilizando los lenguajes de programación C# o Java para automatizar
los siguientes puntos del proyecto, con el objetivo de que la solución despliegue (imprima) el
resultado deseado para cualquier tipo de elemento de un árbol binario:

 Los descendientes de un nodo X (hijos)


 El antecesor de un nodo Y (padre)
 Los nodos interiores
 Los nodos hojas
 El grado de un nodo X
 El nivel de un nodo X
 Longitud de camino interno
 Longitud de camino externo
 Dados dos árboles binarios, determinar si son similares
 Dados dos árboles binarios, determinar si son equivalentes
 Eliminación de todas las hojas de un árbol binario
 Intercambio de los subárboles izquierdo y derecho de un árbol binario.

OBJETIVOS DEL PROYECTO:


 GENERALES:
Poder desarrollar una solución eficiente para el manejo de estructura de datos no lineales,
específicamente los árboles.

 ESPECIFICOS:
Poner en práctica todos los conocimientos adquiridos durante este semestre para el manejo
de memoria dinámica y poder utilizar nuestra lógica e ingenio en el desarrollo de problemas.

USUARIO:
Cualquier persona que necesiten llevar un control y registro de manejos con árboles binarios y que
desee ejecutar las operaciones que estos permiten.

LIMITACIONES:
 Los árboles son más eficientes cuando están equilibrados.
 Arboles degenerados, es decir, que sigue siendo un árbol; sin embargo, su estructura es
equivalente a una lista enlazada.
 Los datos en realizad suelen tener un cierto grado de orden por lo que para que los
arboles binarios sean eficientes es necesario hacer reequilibrados

DESCRIPCION DE LA SOLUCION

Desarrollar un programa que pueda realizar las operaciones básicas de los arboles (inserción,
búsqueda, eliminación, recorrido), así como de la información del árbol como lo es el grado el
nivel, cuáles son sus nodos interiores, sus nodos hojas. Así como contar con la información de cada
nodo sus descendientes, sus hijos, su grado y nivel entre otros. Poder realizar el recorrido del árbol
y ordenar los datos a su vez, realizar intercambio entre las ramas derecha e izquierda del árbol,
poder encontrar su longitud de camino interno y externo, y en general ayudar al usuario a que
lleve control y análisis de sus datos de manera clara, ordenada, eficiente y automatizada.
RECURSOS

Para el desarrollo de la solución se utilizara el entorno de desarrollo Visual Studio 2017, se


implementara en el lenguaje de programación C#, como aplicación de consola.

ALCANCES

 Brindar al usuario la oportunidad de realizar las operaciones básicas de memoria


 Proporcionar la información importante del árbol (grado, nivel)
 Proporcionar la información de cuales son nodos interiores y nodos hojas
 Encontrar el camino interior y exterior del árbol
 Proporcionar la información importante de cada nodo (grado, nivel, descendientes, padre)
 Facilitar el análisis de estructuras de datos binarios.

FUNCIONALIDAD

 Descendientes de un nodo X: Permite al usuario poder ver la información de los nodos


hijos de nodo (rama derecha o hijo derecho y rama izquierda o hijo derecho)

 Antecesor de un nodo Y: Permite al usuario poder ver el nodo padre de un nodo en


específico.

 Los nodos interiores: Esta opción muestra a usuario todos los nodos que no son ni raíz, ni
nodos hojas.

 Los nodos hojas: Permite al usuario ver la lista de todos los nodos que son hojas, es decir
que no cuentan con hijos o descendientes.

 El grado de un nodo X: Proporciona el grado de un nodo en especifico

 El nivel de un nodo X: Proporciona el nivel de un nodo en especifico

 Longitud de camino interno: Esta opción realiza la operación matemática para poder
determinar la longitud de camino interno de un árbol.

 Longitud de camino externo: Esta opción realiza la operación matemática para poder
determinar la longitud de camino externo de un árbol.

 Determinar si dos árboles binarios son similares: Esta opción realiza una comparación
para poder determinar si dados dos árboles binarios son similares, es decir, que sus
estructuras son idénticas pero la información en sus nodos es distinta.
 Determinar si dos árboles binarios son equivalente: Esta opción realiza una comparación
para poder determinar si dados dos árboles binarios son equivalentes, es decir que árboles
que son similares y los nodos contienen la misma información.

 Intercambio de subárboles: Esta opción realiza un intercambio entre las ramas izquierdas
del árbol con las ramas derechas y es aplicada a todo el árbol, básicamente dándole la
vuelta.

METODOLOGIA EMPLEADA Y ACTIVIDADES REALIZADAS

El manejo y desarrollo de estructuras de datos dinámicas no lineales es un tema de suma


importancia dentro del ambiente de informática. Por ello, era importante realizar una revisión al
diseño y funcionalidad de lo que queríamos logran con nuestro software. Para tal fin se realizó una
reunión de inicio con el equipo involucrado para definir los alcances y recursos a utilizar dentro de
nuestro proyecto.

Para cumplir con los objetivos del proyecto, se constituyó un equipo de cinco estudiantes de
ingeniería informática que ha colaborado con el diseño del producto en dichos recursos fueron
delegados las funcionalidades del proyecto a implementar manteniendo siempre una
comunicación continua entre los miembros del equipo para poder llevar a cabo el proyecto.

MANUAL DE USO GENERAL PARA EL USUARIO

 El programa cuenta con un Menú principal en el cual el usuario puede seleccionar la


opción que desea ejecutar
 Después de haber seleccionado la opción que desea ejecutar, el sistema le preguntara en
que árbol desea trabajar (está diseñado para trabajar con dos árboles a la vez)

 Luego que el usuario ingrese el árbol en el que desea trabajar el programa le solicitara la
información a trabajar y/o le devolverá el resultado deseado
CONCLUSION

Con la implementación de este proyecto tenemos como propósito ayudar en la eficiencia del
control y manejo de estructura de datos dinámicas no lineales. Al analizar los arboles binarios
pudimos darnos cuenta del porque llega un punto donde se vuelven ineficientes y es
necesarios balancearlos para que no se vuelva una árbol degenerado, y aun así sigue siendo
una estructura de datos incluso más eficiente que las listas enlazadas que pueden ayudarnos
mucho en el desarrollo de un software eficiente.
RECOMENDACIÓN

Realizar un análisis previo de lo que queremos implementar, para poder realizar el desarrollo de
los diagramas de clases que nos ayuden a la hora de implementar el código fuente, además de
ubicar las funciones o métodos que se pueden hacer forma recursiva, ya que esto facilita el al
programa la búsqueda de la información, así como al programador le permite reducir sus líneas de
código y tener una visi

También podría gustarte