Mathematik (= Haskell):
data Tree a = Leaf | Node { key :: a, children :: [ Tree a ] }
Java (naiv)
class Node<A> { A key ; Node<A> [] children ; }
Java (``richtig'')
interface Tree<A> { void insert (A x); ... } class Leaf<A> implements Tree<A> { } class Node<A> implements Tree<A> { }