* TREE_WANT_NEW node *new(key) -- create new node with given key.
* If it already exists, it is created as the last one.
* TREE_WANT_LOOKUP node *lookup(key) -- find node with given key,
* if it doesn't exist, create it. Defining
* TREE_GIVE_INIT_DATA is strongly recommended.
* TREE_WANT_DELETE int delete(key) -- delete and deallocate node
* TREE_WANT_NEW node *new(key) -- create new node with given key.
* If it already exists, it is created as the last one.
* TREE_WANT_LOOKUP node *lookup(key) -- find node with given key,
* if it doesn't exist, create it. Defining
* TREE_GIVE_INIT_DATA is strongly recommended.
* TREE_WANT_DELETE int delete(key) -- delete and deallocate node