A successor node is the node in a binary search tree that is the leftmost node of the right subtree. I.e, it is the closest value to the current node that is larger than it.
To find a successor, we would effectively need a findMin function of the following form:
Node *& findMin(Node *& r){
if(r->left){
findMin(r->left);
} else {
return r;
}
}