You are on page 1of 10

TIPOS ABSTRACTOS DE

DATOS Y ÁRBOLES

FUNDAMENTOS DE PROGRAMACIÓN
Tipos de Datos
Un tipo de datos es una abstracción que determina un
conjunto de valores que deben tener los datos de cierto tipo

Como ejemplo de estos tipos de datos tenemos: números,


booleanos, símbolos, cadenas, entre otros

Con los tipos de datos asociamos ciertas propiedades y


operaciones

Por ejemplo los números tienen asociadas las operaciones


aritméticas, la concatenación está relacionada con cadenas
Tipos Abstractos de Datos
Un tipo abstracto de datos (TAD) es un conjunto de datos
con sus operaciones

Se les llama abstractos porque nada en su definición indica


como se implementan

Y justamente como nada indica como es su implementación


puede definirse mas de una implementación

Lo importante realmente es que cada implementación


cumpla con las características propias del tipo de dato
definido
Árboles y TAD’s
En la definición que hicimos anteriormente de árboles no
separamos su definición de su implementación

La definición elegida para su implementación: estructuras


con unos campos en particular (nombre, fecha y ojos), no
abstrae adecuadamente el concepto de árbol ni lo separa del
dominio del problema tratado

Esto implica que no se definió adecuadamente el nuevo tipo


(árbol) como un Tipo Abstracto de Datos, y por tanto no se
puede reutilizar su implementación para otros dominios de
problema
Definición de un TAD
Para definir un TAD, se debe identificar
claramente cual es la estructura del tipo
de dato, es decir, qué es lo que se desea
representar

Es necesario abstraer las características


esenciales del tipo de dato a definir estructura
operaciones
De la misma forma, se deben también
identificar las operaciones que se
pueden realizar sobre dicho tipo de dato

Las operaciones encapsulan la


implementación del tipo de dato
Sobre Árboles
De acuerdo a las definiciones previas
conocemos que un árbol está compuesto
por nodos de información, con excepción
del árbol vacío

Que existe una estructura jerárquica entre


estos nodos de manera que:
1. Todo árbol tiene un nodo llamado raíz
2. Todos los nodos del árbol, con excepción de la raíz, tienen un padre
3. Los nodos pueden tener hijos, y los nodos que no tienen hijos se
llaman hojas
4. Al conjunto formado por un nodo y todos sus sucesores se le llama
subárbol
TAD Árbol Binario
5. Todo nodo es un valor con información adicional, por tanto es
indispensable definir el tipo de dato del nodo para empezar a utilizar
una implementación del TAD

Sin embargo, es importante resaltar, que la abstracción realizada sobre el


TAD lleva a que su implementación sea completamente independiente del
tipo de dato del nodo (de manera similar a las listas)

Para un árbol binario se aplica la siguiente restricción adicional:

6. Todo nodo tiene a lo sumo dos (2) hijos, por tanto, en un árbol
binario siempre podremos identificar un subárbol izquierdo y un
subárbol derecho principales
TAD Árbol Binario
De acuerdo a las características y esquematización anterior, las
operaciones sobre el TAD Árbol Binario ó Arbin, son las siguientes:

nuevo-arbin: raíz, subizq, subder -> arbin ; crea un nuevo árbol binario
raiz-arbin: arbin -> valor; retorna el valor del nodo de la raíz
izq-arbin: arbin -> arbin ; devuelve el subárbol izquierdo de un árbol binario
der-arbin: arbin -> arbin ; devuelve el subárbol derecho de un árbol binario
hoja-arbin?: arbin -> booleano; retorna true si el árbol es una hoja
vacío-arbin?: arbin -> booleano; retorna true si el árbol es vacío
arbin?: valor -> booleano; retorna true si el valor es un árbol binario

Se define, por conveniencia, un valor en particular que representará el


árbol vacío, y lo llamaremos: arbinvacio (ó av para abreviar)
Una implementación del
TAD Árbol Binario
Siguiendo la idea de la primera definición que tuvimos de árbol,
podemos ver en el ejemplo en Scheme una implementación de árbol
binario utilizando estructuras

Con base, en la definición del TAD Arbin, desarrolle (diseñe e


implemente) un programa en Scheme que permita sumar los
elementos de un árbol binario de números

Con base, en la definición del TAD Arbin, desarrolle (diseñe e


implemente) un programa en Scheme que permita contar la cantidad
de nodos de un árbol binario dado
Ejercicios sobre Árboles Binarios
Desarrolle (diseñe e implemente) un programa en Scheme que permita
contar la cantidad de hojas de un árbol binario

Desarrolle un programa en Scheme que permita contar la cantidad de


vértices internos de un árbol binario

Desarrolle un programa en Scheme que calcule la altura de un árbol binario

Desarrolle un programa en Scheme retorne la reflexión de un árbol binario

Desarrolle un programa en Scheme que construya una lista de números


con todos los nodos de un árbol binario de números

You might also like