since inorder traversal results in ascending order visit to node , we can store the values of the largest no which is smaller than a ( predecessor ) and smallest no which is large than a ( successor ) using inorder traversal
void find_p_s ( Node * root , int a , Node * * p , Node * * q ) {