You are given the root node of a binary search tree and a specific node p. Your task is to return the inorder successor of this p node. If there is no inorder successor of the given node, return NULL.
Note: The inorder successor of p is the node with the smallest value greater than p.data in the binary search tree.
Constraints: