guia-tp

Práctica 5: Árboles

En cada caso se debe implementar el TAD descripto y una aplicación que, utilizando el tipo abstracto de dato, permita al usuario el ingreso de una o más instancias (según sea necesario), la aplicación de cualquiera de las operaciones y luego la obtención del resultado.

Para empezar a trabajar

Construir el TAD de Arboles correspondiente a la implementación de “Punteros” teniendo en cuenta:

Arboles Binarios

Analizando los árboles binarios

Dado un árbol binario no vacío, se pide implementar funciones que retornen:

Determinar la complejidad algorítmica de las soluciónes.

Conociendo los nodos

Para un nodo del árbol binario determinado, se pide implementar funciones que retornen:

Arboles N-arios

Analizando los árboles

Un árbol n-ario puede ser representado como binario utilizando la transformación de Knuth. Esto puede ser útil para manejar árboles n-arios en estructuras de almacenamiento fijo, sin necesidad de conocer el “n” del árbol.

Se propone un árbol binario derivado del n-ario, tal que para cada nodo del árbol n-ario, su primer hijo es el hijo izquierdo en el árbol binario, y los hermanos de cada nodo son sus hijos derechos.

Ejemplo: (n-ario a la izquierda, representado en binario a la derecha)

Árbol n-ario

Dado un árbol N-ario, se pide implementar funciones que retornen:

Arboles Binarios de Búsqueda Balanceados (AVL)

Insertar y Eliminar

Árboles B y B+

¿Cómo funcionan?

Ejercicios de Implementación

Arbol de Expresión

Escribir un algoritmo que determine si un árbol binario cargado puede ser un árbol de expresión.

Ver en la bibliografía o PDF de la asignatura qué es un árbol de expresión. También pueden consultarse más detalles en el siguiente enlace.

Características de un árbol de expresión:

Comparando árboles

Binario vs. AVL

Generar un algoritmo, recursivo o no, que permita construir un árbol binario de búsqueda balanceado (AVL) a partir de un árbol binario sin un orden determinado.

Comparar las alturas de ambos árboles.

Determinar la complejidad algorítmica.

Binario de Búsqueda vs. AVL

Cargar la misma serie de números en un árbol binario de búsqueda y en un árbol binario balanceado “AVL”.

Comparar la altura de ambos árboles. Repetir el proceso n veces. ¿Qué puede concluir al respecto?

AVL vs. B vs. B+

Dada una serie de números generados al azar, cargarla en un árbol binario de búsqueda balanceado (AVL), en un Árbol “B” y “B+”. Comparar la altura de los árboles.

Repetir el proceso n veces. Se debe poder ingresar la cantidad de claves a generar al azar, la cantidad de repeticiones n que se desea ejecutar el proceso.

¿Qué puede concluir al respecto?

Texto predictivo (LITE)

Se necesita armar un proceso que pueda ir almacenando palabras a medida que se van “tipeando”, cuando uno va escribiendo que trate de inferir de que palabra se trata.

Usar un árbol para resolver el problema (similar a los diccionarios de los celulares por ejemplo).

Se pide: