PFH: La semana en Exercitium (31 de diciembre de 2022)

Esta semana he publicado en Exercitium las soluciones de los siguientes problemas:

A continuación se muestran las soluciones.

1. Rama izquierda de un árbol binario

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

Por ejemplo, el árbol

se puede representar por

Definir la función

tal que ramaIzquierda a es la lista de los valores de los nodos de la rama izquierda del árbol a. Por ejemplo,

Soluciones

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


Soluciones en Haskell


Soluciones en Python

2. Árboles balanceados

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

Por ejemplo, el árbol

se puede representar por

Diremos que un árbol está balanceado si para cada nodo la diferencia entre el número de nodos de sus subárboles izquierdo y derecho es menor o igual que uno.

Definir la función

tal que (balanceado a) se verifica si el árbol a está balanceado. Por ejemplo,

Soluciones

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


Soluciones en Haskell


Soluciones en Python

3. Árboles con bordes iguales

Los árboles binarios con valores en las hojas se pueden definir por

Por ejemplo, los árboles

se representan por

Definir la función

tal que igualBorde t1 t2 se verifica si los bordes de los árboles t1 y t2 son iguales. Por ejemplo,

Soluciones

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


Soluciones en Haskell


Soluciones en Python

4. Árboles con igual estructura

Los árboles binarios con valores en las hojas y en los nodos se definen por

Por ejemplo, los árboles

se pueden representar por

Definir la función

tal que igualEstructura a1 a2 se verifica si los árboles a1 y a2 tienen la misma estructura. Por ejemplo,

Soluciones

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


Soluciones en Haskell


Soluciones en Python

5. Existencia de elementos del árbol que verifican una propiedad

Los árboles binarios con valores en las hojas y en los nodos se definen por

Por ejemplo, el árbol

se representa por

Definir la función

tal que algunoArbol a p se verifica si algún elemento del árbol a cumple la propiedad p. Por ejemplo,

Soluciones

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


Soluciones en Haskell


Soluciones en Python