-- | This module provides functions to test invariants of Braun trees. module Data.Tree.Braun.Properties where import Data.Tree.Binary -- | Returns true iff the tree is a Braun tree. isBraun :: Tree a -> Bool isBraun = zygoTree (0 :: Int) (\_ l r -> 1 + l + r) True alg where alg _ lsize lbrn rsize rbrn = lbrn && rbrn && (lsize == rsize || lsize - 1 == rsize)