Given an implementation of a simple binary search tree including parent
pointers, implement a `successor` method. The methods is given a node
and it should return another node of the tree with the next higher key
(i.e., the smallest of keys which are greater than the given one).

- If there is no such node, it should return a null pointer.
- The given node can also be a null pointer, in which case the method should
  return the smallest node in the tree.

You can expect that `successor` method is never called on an empty tree.

You should submit the file `tree_successor.*` (but not the
`tree_successor_test.*`).