summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--H63.hs6
1 files changed, 5 insertions, 1 deletions
diff --git a/H63.hs b/H63.hs
index 03f081e..0996960 100644
--- a/H63.hs
+++ b/H63.hs
@@ -1,8 +1,12 @@
import Tree
+import Control.Applicative
completeBinaryTree n = makeTree 1
where makeTree x
| x > n = Empty
| otherwise = Branch 'x' (makeTree (2*x)) (makeTree (2*x+1))
-isCompleteBinaryTree
+isCompleteBinaryTree t = b>a where
+ [a, b] = getZipList $ maxmin t 1
+ maxmin Empty m = ZipList [0, m]
+ maxmin (Branch _ l r) m = ZipList [max.(max m),min] <*> (maxmin l (2*m)) <*> (maxmin r (2*m + 1))