1

您好,我有一个任务是实现 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;

}
4

0 回答 0