AVL树旋转段故障

时间:2015-03-11 02:06:33

标签: segmentation-fault binary-search-tree avl-tree

我的Avl树在旋转部分不断出现seg故障

void leftRotate(AVLNode **rootptr){

AVLNode *temp1, *temp2;

if(rootptr!=NULL && *rootptr!=NULL && (*rootptr)->right!=NULL){
    temp1 = *rootptr;
    if(temp1->parent->left == temp1 && temp1->right != NULL) {              //Left rotate for left-right cases
        temp1->right->parent = temp1->parent;
        temp1->parent->left = temp1->right;

        temp1->parent = temp1->right;
        temp1->right->left = temp1;
        temp1->left = temp1->right = NULL;
        temp1 = temp1->parent;
    }else{                                  //Left rotate for right-right cases
        if(temp1->parent->parent == NULL){
            temp1->left = temp1->parent;
            temp1->left->parent = temp1;
            *rootptr = temp1;
            temp1->parent = NULL;
        }

    }   
    updateHeight(temp1->left);
    updateHeight(temp1);
}
}

错误特别发生在这一部分。

if(temp1->parent->parent == NULL){
            temp1->left = temp1->parent;
            temp1->left->parent = temp1;
            *rootptr = temp1;
            temp1->parent = NULL;
        }

右侧左侧旋转的情况已经起作用,右侧情况下的左侧旋转一直给我一个seg故障。我已经编辑了很多次但是我不能把枢轴的父母放到它的左边孩子而没有seg错误。

0 个答案:

没有答案