平衡二叉树操作
程序员文章站
2022-05-20 10:21:31
...
void search(node *root,int x)//查询操作
{
if(root==NULL)
{
prinf("空树");
return;
}
if(x==root->data)//找到并访问
printf("%d/n",root->data);
else if(x<root->data)//小于根节点,左子树搜索
search(root->rchild,x);
else//右子树搜索
search(root->lchild,x);
}
void L(node *&root)//左旋 A为根,B为右子树
{
node* temp=root->rchild;//创立temp指向B;
root->rchild=temp->lchild;//①将B的左子树赋值给A的右子树
temp->lchild=root;//②A赋值给B的左子树;
root=temp;//③B赋值给根;
updateHeight(root);
updateHeight(temp);
}
void R(node *root)//右旋B为根,A为左子树
{
node *temp=root->lchild;
root->lchild=temp->rchild;
temp->rchild=root;
root=temp;
updateHeight(root);
updateHeight(temp);
}