scalaz
Leaf represents a tree node with no children.
Node represents a tree node that may have children.