TernaryTrees-0.1.3.4: Data/Set/TernarySet/Internal.hs
module Data.Set.TernarySet.Internal where
-- | TernarySet a is ternary tree. It is commonly used for storing word lists
-- like dictionaries.
data TernarySet a =
-- | A Node has a less than, equal and greater than branch
Node !a !(TernarySet a) !(TernarySet a) !(TernarySet a)
-- | Null nodes only have a greater nbranch, by definition
| Null !(TernarySet a)
-- | An empty tree
| End
deriving (Show, Eq)
-- | Returns the number of non-Null Elems.
treeSize :: TernarySet a -> Int
treeSize End = 0
treeSize (Null rest) = treeSize rest
treeSize (Node _ l e h) = 1 + treeSize l + treeSize e + treeSize h