Метод FindHeight (из двоичного дерева) всегда возвращает 1? - PullRequest
0 голосов
/ 12 сентября 2018
int findHeight(struct BstNode* root)
{
    if(root==NULL)
        return -1;
    return max(findHeight(root->left),findHeight(root->right))+1;
}

Функция всегда возвращает 1 в качестве высоты.
Вот ссылка на код https://github.com/ashwinidotx/OpenIssues/blob/master/Height%20Of%20Binary%20Tree.c

1 Ответ

0 голосов
/ 12 сентября 2018

Код глючит.Когда вы выходите за пределы конечного узла, вы возвращаете -1, что неверно.Это делает вычитание при расчете высоты дерева.Вы должны просто вернуть 0 здесь, потому что вы достигли конца, там нет узла.

Вот исправленный метод:

int findHeight(struct BstNode* root)
{
    if(root == NULL)
        return 0;

    return 1 + max(findHeight(root->left), findHeight(root->right));
}
...