Ja bym próbował w taki sposób:
Tree* search(Tree *root, int x)
{
if (root == NULL) return NULL;
if (root->key == x) return root;
if (root->left)
{
Tree* l = search(root->left, x);
}
if(l !=NULL)
{
return l;
}
if (root->right)
{
Tree* l = search(root->right, x);
}
else
{
return NULL;
}
if(r !=NULL)
{
return r;
}
return NULL;
}
Nie jestem pewien czy będzie w tej formie działeć. Teraz nie mam jak tego sprawdzić. Jednak koncepcyjnie jest w porządku.