treap增加操作查询操作

//递归到叶子节点,一路维护信息即可
//查询排名

int query_rank(int k,int x){
	if (k==0) return 0;
	if (tr[k].v==x) return tr[tr[k].l].size+1;
	else if (x>tr[k].v)
	   return tr[tr[k].l].size+tr[k].w+query_rank(tr[k].r,x);
	else return query_rank(tr[k].l,x);
} 

//查询排名对应的个数

int query_num(int k,int x){
	if (k==0) return 0;
	if (x<=tr[tr[k].l].size)
	   return query_num(tr[k].l,x);
	else if (x>tr[tr[k].l].size+tr[k].w)
	  return query_num(tr[k].r,x-tr[tr[k].l].size-tr[k].w);
	else return tr[k].v;
} 
全部评论

相关推荐

11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务