Á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

2 Comentarios

  1. Para resolver este problema podemos recorrer los dos árboles de manera simultánea comparando cada uno de sus nodos a lo largo del borde. Si alguno de ellos difiere, entonces los bordes no son iguales y podemos devolver falso. Si llegamos al final del recorrido sin encontrar diferencias, entonces los bordes son iguales y podemos devolver verdadero.

    A continuación te presento una posible implementación de la función igualBorde:

    La primera línea de la función se aplica cuando ambos árboles son hojas y simplemente comparamos los valores de las hojas. La segunda línea se aplica cuando ambos árboles son nodos y comparamos sus hijos izquierdo y derecho de manera recursiva. La tercera línea se aplica cuando los árboles son de tipos diferentes, lo cual significa que sus bordes no pueden ser iguales, por lo que devolvemos falso.

    Con esta implementación, podemos comprobar que los ejemplos que has proporcionado en la pregunta producen los resultados esperados:

  2. Solución en Lean3

    Aquí tienes la implementación de la función igualBorde en Lean:

    Primero se define el tipo de dato arbol mediante la inductiva arbol, y luego se crea un espacio de nombres para las funciones que vayamos a definir sobre él.

    La función borde se implementa recursivamente siguiendo el mismo esquema que en la solución anterior. La función igualBorde simplemente compara si ambos bordes son iguales usando el operador =.

    Para poder usar el operador = es necesario que el tipo α tenga la estructura de tipo decidable_eq, que permite determinar si dos elementos son iguales.

    Puedes probar la función de la siguiente manera:

Escribe tu solución