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

2 Comentarios

  1. Para definir la función sumaArbol, podemos utilizar la estructura del árbol binario para recorrerlo de manera recursiva y sumar los valores de cada nodo. La idea es que, para cada nodo del árbol, sumemos su valor y luego sumemos recursivamente los valores de sus hijos.

    Podemos implementar la función de la siguiente manera:

    Por ejemplo, para el árbol que se ha mencionado al principio, podemos evaluar sumaArbol de la siguiente manera:

    Como podemos ver, la función sumaArbol funciona correctamente y devuelve la suma de los valores de todos los nodos del árbol.

  2. Para resolver este problema, podemos utilizar la estrategia de recorrer el árbol en preorden y acumular la suma de los valores que encontramos en cada nodo.

    Para implementar esta estrategia, podemos utilizar una función recursiva que, dado un nodo x, sume los valores de sus dos hijos (si existen) y le sume el valor del propio nodo. Si el nodo es una hoja (es decir, si es una instancia de la clase H), simplemente retornamos 0.

    A continuación se muestra una implementación de la función sumaArbol:

    Para probar la función, podemos utilizar el ejemplo que se proporciona:

Escribe tu solución