Suma de un árbol

Los árboles binarios con valores en los nodos se pueden definir por

Por ejemplo, el árbol

se puede representar por

Definir por recursión la función

tal sumaArbol x es la suma de los valores que hay en el árbol x. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

El tipo de los árboles binarios con valores en los nodos

1. El tipo de los árboles binarios con valores en los nodos en Haskell

El árbol, con valores en los nodos,

se puede representar por

usando el tipo de los árboles con valores en los nodos definido como se muestra a continuación.

2. El tipo de los árboles binarios con valores en los nodos en Python

El árbol binario, con valores en los nodos,

se puede representar por

usando el tipo de los árboles binarios con valores en los nodos definido como se muestra a continuación.

Árbol de profundidad n con nodos iguales

El árbol binario

se puede representar por

El tipo de los árboles binarios se puede definir por

Definir las funciones

tales que

  • repeatArbol x es es árbol con infinitos nodos x. Por ejemplo,

  • replicate n x es el árbol de profundidad n cuyos nodos son x. Por ejemplo,

Comprobar con QuickCheck que el número de hojas de replicateArbol n x es 2^n, para todo número natural n.
Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

Subárbol de profundidad dada

El árbol binario

se puede representar por

El tipo de los árboles binarios se puede definir por

La función take está definida por

Definir la función

tal que takeArbol n t es el subárbol de t de profundidad n. Por ejemplo,

Comprobar con QuickCheck que la profundidad de takeArbol n x es menor o igual que n, para todo número natural n y todo árbol x.

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

Imagen especular de un árbol binario

El árbol binario

se puede representar por

El tipo de los árboles binarios se puede definir por

Definir la función

tal que espejo x es la imagen especular del árbol x. Por ejemplo,

Comprobar con QuickCheck las siguientes propiedades, para todo árbol x,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python