Эй, ребята, я просто практикую рекурсивный код на двоичном дереве поиска. Я получаю ошибку seg, но я не уверен, где проблема (возможно, что-то глупое смотрит мне прямо в лицо). У меня есть другие функции, которые работают нормально, как подсчет количества узлов или подсчет высоты дерева. Эта функция, в частности, дает мне проблемы. Я кодирую в C++.Поиск ошибки seg в рекурсивном коде для последующего преемника
//wrapper function
int table::in_order_successor()
{
node * temp;
temp = root;
in_order_successor(root, temp);
}
//Find the in-order successor
int table::in_order_successor(node * root, node * temp)
{
if(root == NULL) return 0;
if(root->right != NULL)
if(root->data == temp->data)
in_order_successor(root, temp->right);
in_order_successor(root, temp->left);
return temp->data;
}
Идея у меня было, чтобы получить функцию идти прямо один раз от корня, а затем продолжить влево, насколько это возможно. Чтобы заставить его идти сразу, я хочу идти только правильно, если мои данные root-> равны моим темп-> данным (данные - это просто генерируемый случайным образом int).
не уверен, вы все еще следуете моему ответу. Я много раз редактировал свой ответ и надеюсь, что эта версия будет работать для вас. – keelar