嘿伙计们,我只是在二叉搜索树上练习递归代码。我遇到了一个段错误,但我不确定问题出在哪里(可能是一些愚蠢的东西盯着我的脸)。我还有其他运行良好的功能,例如计算节点数或计算树的高度。特别是这个功能给我带来了麻烦。我正在用 C++ 编写代码。
//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->data 等于我的 temp->data (数据只是随机生成的 int),我只想让它正确运行。