Professional Documents
Culture Documents
Myrbtree
Myrbtree
h>
#include<conio.h>
#define RED 'R'
#define BLACK 'B'
struct node
{
struct node *left;
struct node *right;
struct node *parent;
int data;
char color;
}root;
void llrotate(struct node *v)
{
struct node *p=v->parent;
struct node *g=p->parent;
struct node *gp=g->parent;
g->left=p->right;
g->parent=p;
p->right=g;
if(gp)
{
if(gp->left==gp)
{
gp->left=p;
p->parent=gp;
}
else
{
gp->right=p;
p->parent=gp;
}
else
{
root=p;
}
}
void rrrotate(struct node *v)
{
struct node *p=v->parent;
struct node *g=p->parent;
struct node *gp=g->parent;
g->right=p->left;
g->parent=p;
p->left=g;
if(gp)
{
if(gp->left==gp)
{
gp->left=p;
p->parent=gp;
}
else
{
gp->right=p;
p->parent=gp;
}
else
{
root=p;
}
}
void lrrotate(struct node *v)
{
struct node *p=v->parent;
struct node *g=p->parent;
struct node *gp=g->parent;
p->right=v->left;
g->left=v->right;
g->parent=v;
p->parent=v;
v->left=p;
v->right=g;
if(gp)
{
if(gp->left==gp)
{
gp->left=v;
v->parent=gp;
}
else
{
gp->right=v;
v->parent=gp;
}
else
{
root=p;
}
}