Код глючит.Когда вы выходите за пределы конечного узла, вы возвращаете -1
, что неверно.Это делает вычитание при расчете высоты дерева.Вы должны просто вернуть 0
здесь, потому что вы достигли конца, там нет узла.
Вот исправленный метод:
int findHeight(struct BstNode* root)
{
if(root == NULL)
return 0;
return 1 + max(findHeight(root->left), findHeight(root->right));
}