summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--H55.hs6
-rw-r--r--H56.hs8
-rw-r--r--Tree.hs4
3 files changed, 18 insertions, 0 deletions
diff --git a/H55.hs b/H55.hs
new file mode 100644
index 0000000..a6e6a95
--- /dev/null
+++ b/H55.hs
@@ -0,0 +1,6 @@
+import Tree
+
+cbalTree :: Int -> [Tree Char]
+cbalTree 0 = [Empty]
+cbalTree n = let (q, r) = (n-1) `quotRem` 2 in
+ [ Branch 'x' x y | i <- [q .. q + r], x <- cbalTree i, y <- cbalTree $ n - i - 1]
diff --git a/H56.hs b/H56.hs
new file mode 100644
index 0000000..3cf7127
--- /dev/null
+++ b/H56.hs
@@ -0,0 +1,8 @@
+import Tree
+
+mirror :: Tree a -> Tree a -> Bool
+mirror Empty Empty = True
+mirror a@(Branch _ a1 a2) b@(Branch _ b1 b2) = (mirror a1 b2) && (mirror a2 b1)
+mirror _ _ = False
+
+symmetric t = mirror t t
diff --git a/Tree.hs b/Tree.hs
new file mode 100644
index 0000000..dcfef1a
--- /dev/null
+++ b/Tree.hs
@@ -0,0 +1,4 @@
+module Tree where
+
+data Tree a = Empty | Branch a (Tree a) (Tree a)
+ deriving (Show, Eq)