Ошибка бинарного дерева поиска - PullRequest
0 голосов
/ 21 августа 2011

Я хочу найти минимальное значение в бинарном дереве поиска.Я написал ниже код.Но когда я вызываю функцию из main и получаю возвращаемое значение, она всегда печатается как 0.

cal, пожалуйста, помогите.

int findMinimumValue(struct tnode* node)
{
int min=node->data;
if(node->lchild==NULL)
{
   return min;
}
else
    findMinimumValue(node->lchild);
}

1 Ответ

6 голосов
/ 21 августа 2011

Похоже, вы на самом деле не возвращаете значение вашего рекурсивного вызова:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...