可并堆简单总结

左偏树

代码

int mer(int x,int y){
	if(x==0||y==0) return x+y;
	if(lt[x].val>lt[y].val) swap(x,y);
	rc=mer(rc,y);
	if(lt[lc].dis<lt[rc].dis) swap(lc,rc);
	lt[x].dis=lt[rc].dis+1;
	return x;
}

斜堆

代码

int mer(int x,int y){
	if(x==0||y==0) return x+y;
	if(lt[x].val>lt[y].val) swap(x,y);
	rc=mer(rc,y);
	swap(lc,rc);
	return x;
}

posted on 2019-01-04 22:00  ErkkiErkko  阅读(69)  评论(0编辑  收藏

统计