C ++ - 表达式必须是可修改的左值?

时间:2015-07-01 18:01:54

标签: c++ binary-search-tree lvalue

所以我现在正在实施一个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上收到此错误:

  

表达式必须是可修改的左值

为什么我收到此错误?

任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:6)

看来你的意思是以下

while ( ( y != NULL && x ) = y->right)

至于错误消息的含义,那么当你使用赋值运算符时,它的优先级小于相等和逻辑运算符的优先级,你实际上已经

y

考虑到将//... else { node* y = x->parent; 的声明放在else语句的代码块中要好得多,因为它仅在此范围内使用

{{1}}