二进制搜索树-C++-表达式必须是可修改的左值

binary search tree - C++ - expression must be a modifiable lvalue?

本文关键字:修改 搜索树 -C++- 表达式 二进制      更新时间:2023-10-16

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

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

为什么我会出现此错误?

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

您的意思似乎是以下

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

至于错误消息的含义,当你使用赋值运算符时,它的优先级低于等式和逻辑运算符的优先级,事实上你有

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

考虑到将y的声明放在else语句的代码块中要好得多,因为它只在这个范围中使用

//...
else
{
    node* y = x->parent;