height
ссылается на неправильную переменную. Поскольку он смотрит на root
и полностью игнорирует параметр node
, каждый вызов height
будет таким же, и рекурсия, однажды начавшаяся, никогда не закончится.
Замените все ссылки на root
с node
в height
.
if (node == nullptr)
return 0;
int leftside = height(node->left);
int rightside = height(node->right);
И несколькими несвязанными вещами:
height
может быть объявлено const
или может быть частью c члена BinaryTree
или перемещен в класс Node
.
У вас есть конструктор для TreeNode
, который должен обрабатывать инициализацию всех членов класса. Когда вы выделяете или добавляете узел, у вас должна быть только одна строка wherever = new TreeNode(key);
. (И в чем разница между theData
и value
? Вам нужно различать поля для них?)
BinaryTree *tree
в main
может быть просто объектом, и не обязательно динамически распределяется (BinaryTree tree;
, затем изменить все tree->
на tree.
).