node*GetNode(node*r,int d)并不能找到右边结点,只能遍历左边结点在呢么办,该怎么解决

node*GetNode(node*r,int d)并不能找到右边结点,只能遍历左边结点在呢么办
node*GetNode(node*r,int d)
{
if(r)
{
if(r->data==d)return r;
return GetNode(r->left,d);
return GetNode(r->right,d);
}
return NULL;
}

------解决方案--------------------
C/C++ code

node*GetNode(node*r,int d)
{
  node*p = NULL;
  if(r)
  {
   if(r->data==d)
   {
     p = r;
   }
   else
   {
     p = GetNode(r->left,d);
     if(p==NULL)
      p = GetNode(r->right,d);
   }
  }
  return p;
}