Похоже, вы на самом деле не возвращаете значение вашего рекурсивного вызова:
int findMinimumValue(struct tnode* node)
{
int min=node->data;
if(node->lchild==NULL)
{
return min;
}
else
{
// you need the return here or you're never returning
// anything in this branch
return findMinimumValue(node->lchild);
}
}
в этом отношении не так уж много необходимости в переменной, как она есть, а как же:
int findMinimumValue(struct tnode* node)
{
if (node->lchild == NULL)
return node->data;
else
return findMinimumValue(node->lchild);
}
о, и просто как упоминание: я бы подумал об использовании нерекурсивной версии этого; это также довольно просто:
int findMinimumValue(struct tnode* node)
{
while (node->lchild != NULL)
node = node->lchild;
return node->data;
}