您的位置:首页 > 其它

左偏树模板

2017-07-16 09:00 405 查看
解析链接:http://www.cnblogs.com/skywang12345/p/3638327.html

struct Tree
{
int value;
int dist;
Tree *left,*right;
};

Tree *tree[maxn];

int distance(Tree *t)
{
return t==NULl?0:t->dist;
}

void fixdist(Tree *t)
{
if(distance(t->left)<distance(t->right))
swap(t->right,t->left);
t->dist=distance(t->right)+1;
}
Tree * merge(Tree *a,Tree *b)
{
if(a==NULL) return b;
if(b==NULL) return a;
if(b->value>a->value) swap(a,b);
a->right=merge(a->right,b);
fixdist(a);
return a;
}
Tree *delMax(Tree *t)
{
if(t!=NULL)
return merge(t->left,t->right);
return NULL;
}
void init(Tree* &t,int val)
{
t=new Tree;
t->dist=1;
t->value=val;
t->left=t->right=NULL;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: