您好,我有一个任务是实现 RBT 树,然后作为应用程序在其中插入字典,以实现更有效的插入和搜索操作。当我插入字典文件时,它只读取第一个单词和第二个单词,但不修复第二个单词的插入,当我调试问题时,此错误显示在enter image description here中。问题出在 insertfixup 方法中。我认为这就是你所在的位置,但我不确定为什么即使我没有用任何东西初始化你,它也会给我同样的错误,所以我尝试用 TNULL 初始化它,它仍然是一样的,我希望我的问题很清楚
private void insertFixUp(Node x) {
Node u = TNULL;
while (x.parent.color == 1){
if(x.parent == x.parent.parent.right){
u=x.parent.parent.left;
if (u.color == 1){
u.color =0;
x.parent.color = 0;
x.parent.parent.color = 1;
x = x.parent.parent;
}
else {
if(x == x.parent.left) {
x = x.parent;
rightRotate(x);
}
x.parent.color=0;
x.parent.parent.color=1;
leftRotate(x.parent.parent);
}
} else {
u = x.parent.parent.right;
if (u.color == 1){
u.color =0;
x.parent.color = 0;
x.parent.parent.color = 1;
x = x.parent.parent;
}
else {
if(x == x.parent.right) {
x = x.parent;
leftRotate(x);
}
x.parent.color=0;
x.parent.parent.color=1;
leftRotate(x.parent.parent);
}
}
if(x == root){
break;
}
}
root.color=0;
}