diff options
-rw-r--r-- | H55.hs | 1 | ||||
-rw-r--r-- | H56.hs | 1 | ||||
-rw-r--r-- | H57.hs | 11 | ||||
-rw-r--r-- | H58.hs | 12 |
4 files changed, 25 insertions, 0 deletions
@@ -1,3 +1,4 @@ +module H55 where import Tree cbalTree :: Int -> [Tree Char] @@ -1,3 +1,4 @@ +module H56 where import Tree mirror :: Tree a -> Tree a -> Bool @@ -0,0 +1,11 @@ +import Tree + +construct :: Ord a => [a] -> Tree a +construct = foldl add Empty + +add :: Ord a => Tree a -> a -> Tree a +add Empty x = Branch x Empty Empty +add t@(Branch a t1 t2) x = case compare x a of + LT -> Branch a (add t1 x) t2 + GT -> Branch a t1 (add t2 x) + EQ -> t @@ -0,0 +1,12 @@ +import Tree +import H55 +import H56 + +symCbalTrees n + | n `mod` 2 == 0 = [] + | otherwise = [Branch 'x' x (reverseTree x) | x <- cbalTree (n `div` 2)] + +reverseTree Empty = Empty +reverseTree (Branch x l r) = Branch x (reverseTree r) (reverseTree l) + +symCbalTrees' = filter symmetric . cbalTree |