AVL树删除操作导致遍历结果不正确
创始人
2024-11-13 02:00:17
0

在AVL树的删除操作中,需要重新平衡树以确保树的平衡性。在节点删除后,需要从被删除节点的父节点开始向上遍历,检查子树的平衡因子是否失衡,并进行旋转操作以保持平衡。同时,在进行旋转操作时需要更新节点的高度信息。

下面是一个AVL树的删除操作的示例代码(假设节点类型为Node,节点高度信息在节点结构体中的height属性中存储):

Node* deleteNode(Node* root, int key) {
    if (!root) return NULL;
    
    if (key < root->val) {
        root->left = deleteNode(root->left, key);
    } else if (key > root->val) {
        root->right = deleteNode(root->right, key);
    } else {
        if (!root->left || !root->right) {
            Node* tmp = root->left ? root->left : root->right;
            if (!tmp) {
                tmp = root;
                root = NULL;
            } else {
                *root = *tmp;
            }
            delete tmp;
        } else {
            Node* cur = root->right;
            while (cur->left) {
                cur = cur->left;
            }
            root->val = cur->val;
            root->right = deleteNode(root->right, cur->val);
        }
    }
    
    if (!root) return NULL;

    root->height = max(getHeight(root->left), getHeight(root->right)) + 1;
    int balance = getBalanceFactor(root);
    
    if (balance > 1 && getBalanceFactor(root->left) >= 0) {
        return rightRotate(root);
    }
    
    if (balance > 1 && getBalanceFactor(root->left) < 0) {
        root->left = leftRotate(root->left);
        return rightRotate(root);
    }
    
    if (balance < -1 && getBalanceFactor(root->right) <= 0) {
        return leftRotate(root);
    }
    
    if (balance < -1 && getBalanceFactor(root->right) > 0) {
        root->right = rightRotate(root->right);
        return leftRotate(root);
    }
    
    return root;
}

相关内容

热门资讯

黑科技辅助!wepoke软件靠... 您好,wepoke软件靠谱这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩...
黑科技辅助!wepoke插件,... 黑科技辅助!wepoke插件,(WePoKe有规律)原来真的有挂,辅助教程(有挂透视)-哔哩哔哩是一...
黑科技辅助!wepoke黑科技... 黑科技辅助!wepoke黑科技是啥,(wepoke德州扑克)原来真的有挂,详细教程(有挂分享)-哔哩...
一分钟了解!gg扑克有假,(扑... 一分钟了解!gg扑克有假,(扑克时间)原来真的有挂,软件教程(了解有挂)-哔哩哔哩;一分钟了解!gg...
黑科技辅助!wepoke私人局... 您好,wepoke私人局有挂这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多...
科普攻略!微扑克辅牌器,(新微... 科普攻略!微扑克辅牌器,(新微扑克)原来真的有挂,可靠技巧(有挂解惑)-哔哩哔哩是一款可以让一直输的...
黑科技辅助!wepoke有辅助... 黑科技辅助!wepoke有辅助软件,(WePoKe能胜)原来真的有挂,必胜教程(有挂详情)-哔哩哔哩...
黑科技辅助!wepoke软件透... 黑科技辅助!wepoke软件透明挂合法,(WePoKe胜率)原来真的有挂,系统教程(有挂规律)-哔哩...
黑科技辅助!WePoKe透明挂... 您好:WePoKe透明挂这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的...
分享个大家!云扑克是否有外挂,... 分享个大家!云扑克是否有外挂,(云扑克软件)原来真的有挂,新2025版(真实有挂)-哔哩哔哩是一款可...