Я пытаюсь реализовать самобалансирующееся дерево двоичного поиска.Когда я пытаюсь получить высоту правой ветви, это работает, пока я не достигну этой точки.Затем я получаю ошибку ошибки сегментации, и valgrind говорит, что было неверное чтение размера 8. Странно, когда я смотрю на дерево, когда возникает эта ошибка, правая ветвь не равна нулю.Есть ли какая-то проверка, которую я забыл сделать и которая вызывает эту ошибку?
Строки, в которых выдается ошибка:
int rightChildHeight = 0;
if (n->right != NULL)
rightChildHeight = n->right->getHeight();
getHeight ():
int Node::getHeight()
{
// No kids => 2
if (!left && !right)
return 1;
// 1 kid => height of kid +1
else if (!left && right)
return right->getHeight() + 1;
else if (left && !right)
return left->getHeight() + 1;
// 2 kids => height of taller kid +1
else
return max(left->getHeight(), right->getHeight()) + 1;
}
Дерево при возникновении ошибки: