310 views
# PLP | Practica 0 ejercicio 5 ```haskell -- Dado el siguiente modelo para arboles binarios: data AB a = Nil | Bin (AB a) a (AB a) deriving (Show) -- BIN es un constructor de arboles binarios que recibe un arbol izquierdo, un valor y un arbol derecho -- Definir las siguientes funciones: -- a) vacioAB que indica si un arbol es vacio, o sea que no tiene nodos vacioAB :: AB a -> Bool vacioAB Nil = True vacioAB _ = False -- b) negacion AB que dado un arbol de booleanos construye otro formado por la negacion de cada uno de los nodos negacionAB :: AB Bool -> AB Bool negacionAB Nil = Nil -- caso base: si el arbol es vacio, devuelvo el arbol vacio negacionAB (Bin izq x der) = Bin (negacionAB izq) (not x) (negacionAB der) -- caso recursivo: niego el valor del nodo actual y sigo con los hijos -- Ejemplo de prueba: negacionAB (Bin (Bin Nil True Nil) False (Bin Nil False Nil)) evalua a Bin (Bin Nil False Nil) True (Bin Nil True Nil) -- c) productoAB calcula el producto de todos los nodos del arbol productoAB :: AB Int -> Int productoAB Nil = 1 -- caso base: si el arbol es vacio, devuelvo 1 productoAB (Bin izq x der) = x * productoAB izq * productoAB der -- caso recursivo: multiplico el valor del nodo actual por el producto de los hijos actual x izq x der```