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.*`).