所以我现在正在实施一个BST,我正在尝试编写一个后继函数。这就是我现在所拥有的:
int BinarySearchTree::TREE_SUCCESSOR(node* x)
{
node* y = NULL;
if (x->right != NULL)
{
return FIND_MIN(x->right);
}
else
{
y = x->parent;
while (y != NULL && x = y->right)
{
x = y;
y = y->parent;
}
return y->key;
}
}
但是在这一行:
while (y != NULL && x = y->right)
我在y
上收到此错误:
表达式必须是可修改的左值
为什么我收到此错误?
任何帮助将不胜感激,谢谢!
答案 0 :(得分:6)
看来你的意思是以下
while ( ( y != NULL && x ) = y->right)
至于错误消息的含义,那么当你使用赋值运算符时,它的优先级小于相等和逻辑运算符的优先级,你实际上已经
y
考虑到将//...
else
{
node* y = x->parent;
的声明放在else语句的代码块中要好得多,因为它仅在此范围内使用
{{1}}