用C++代码写AVL树的旋转代码
时间: 2023-04-07 18:03:12 浏览: 148
我可以回答这个问题。以下是一个简单的C代码实现AVL树的旋转:
//左旋转
AVLNode* leftRotate(AVLNode* node){
AVLNode* right = node->right;
AVLNode* rightLeft = right->left;
right->left = node;
node->right = rightLeft;
node->height = max(height(node->left), height(node->right)) + 1;
right->height = max(height(right->left), height(right->right)) + 1;
return right;
}
//右旋转
AVLNode* rightRotate(AVLNode* node){
AVLNode* left = node->left;
AVLNode* leftRight = left->right;
left->right = node;
node->left = leftRight;
node->height = max(height(node->left), height(node->right)) + 1;
left->height = max(height(left->left), height(left->right)) + 1;
return left;
}
其中,AVLNode是AVL树的节点结构体,height函数用于计算节点的高度,max函数用于比较两个数的大小并返回较大的值。
阅读全文