1、结点数据结构定义
struct Node
{
int v;
int height;
Node* lchild;
Node* rchild;
};
2、新建结点
Node* newNode(int v)
{
Node* node=new Node;
node->v=v;
node->height=1;
node->lchild=node->rchild=NULL;
return node;
}
3、获取结点高度
int getHeight(Node* root)
{
if(root==NULL) return 0;
return root->height;
}
4、获取平衡因子
int getBalanceFactor(Node* root)
{
return getHeight(root->lchild)-getHeight(root->rchild);
}
5、更新高度
void updateHeight(Node* root)
{
root->height=max(getHeight(root->lchild),getHeight(root->rchild))+1;
}
6、左旋
void L(Node* &root)