问题描述
首先,抱歉我的英语不好。
我正在尝试实现红黑树算法,但我在使用红黑树算法时遇到问题,尤其是“向右旋转”。
我关注了这张图片。
这是我的代码。
cantidamedicina:100.0cantidadmedicinarestante:19.999999999999996contadordia:0
cantidamedicina:80.0cantidadmedicinarestante:19.999999999999996contadordia:1
cantidamedicina:64.0cantidadmedicinarestante:19.999999999999996contadordia:2
cantidamedicina:51.2cantidadmedicinarestante:19.999999999999996contadordia:3
cantidamedicina:40.96cantidadmedicinarestante:19.999999999999996contadordia:4
cantidamedicina:32.768cantidadmedicinarestante:19.999999999999996contadordia:5
cantidamedicina:26.2144cantidadmedicinarestante:19.999999999999996contadordia:6
cantidamedicina:20.97152cantidadmedicinarestante:19.999999999999996contadordia:7
cantidamedicina:16.777216000000003cantidadmedicinarestante:19.999999999999996contadordia:8
8
正如您在评论中看到的,在更改“x”节点的父节点后,“y”节点出现访问冲突。 一旦执行该行,我就可以检查 y 值是否为空。
我该怎么办?? 谢谢。
*** 这是我代码的一部分。
void RedBlackTree::right_rotate(Node*& root,Node*& y)
{
Node* x = y->left;
y->left = x->right;
if (y->left != NULL)
y->left->parent = y;
x->parent = y->parent;
// ERROR!!!!
if (y->parent == NULL)
root = x;
else if (y == y->parent->left)
y->parent->left = x;
else
y->parent->right = x;
x->right = y;
y->parent = x;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)