summaryrefslogtreecommitdiff
path: root/61-69/64.hs
diff options
context:
space:
mode:
Diffstat (limited to '61-69/64.hs')
-rw-r--r--61-69/64.hs10
1 files changed, 10 insertions, 0 deletions
diff --git a/61-69/64.hs b/61-69/64.hs
new file mode 100644
index 0000000..7b7aedd
--- /dev/null
+++ b/61-69/64.hs
@@ -0,0 +1,10 @@
+data Tree a = Empty | Branch a (Tree a) (Tree a) deriving (Show, Eq)
+
+layout :: Tree Char -> Tree (Char, (Int, Int))
+
+layout t = fst $ draw t 1 1
+ where draw Empty x _ = (Empty, x)
+ draw (Branch v l r) x y =
+ (Branch (v, (x', y)) lt rt, x'')
+ where (lt, x') = draw l x (y + 1)
+ (rt, x'') = draw r (x' + 1) (y + 1)