data Tree k = Leaf { key :: k } | Branch { left :: Tree k, right :: Tree k }Modellierung in Java (als Kompositum)
interface Tree<K> { } class Leaf<K> implements Tree<K> { Leaf(E key) { .. } } class Branch<K> implements Tree<K> { Branch(Tree<K> left, Tree<K> right) { .. } }