data Tree a = Branch (Tree a) (Tree a) | Leaf a fold :: ... largest :: Ord a => Tree a -> a replace_all_by :: a -> Tree a -> Tree a replace_all_by_largest :: Ord a => Tree a -> Tree a
die offensichtliche Implementierung
replace_all_by_largest t = let l = largest t in replace_all_by l tdurchquert den Baum zweimal.
Eine Durchquerung reicht aus!