社区讨论
【问】关于Splay
学术版参与者 3已保存回复 17
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 17 条
- 当前快照
- 1 份
- 快照标识符
- @mk6uj9a4
- 此快照首次捕获于
- 2026/01/09 20:22 上个月
- 此快照最后确认于
- 2026/01/11 19:30 上个月
CPP
struct Splay_Node{
ll sum;
int siz;
Splay_Node* ls;
Splay_Node* rs;
Splay_Node* fa;
Splay_Node(ll _sum) : siz(1), ls(NULL), rs(NULL), fa(NULL) { sum=_sum; }
};
Splay_Node* kth(Splay_Node* rt,int k){
//if(rt==NULL||k>rt->siz) throw runtime_error("You can't find kth in the empty tree!");
int lsiz=0;
if(rt->ls==NULL) lsiz=0;
else lsiz=rt->ls->siz;
if(k==lsiz+1) return rt;
if(k<=lsiz) return kth(rt->ls,k);
return kth(rt->rs,k-lsiz-1);
}
注释掉的这一行该怎么写?
也就是我怎么处理第k小值递归中节点为空的情况(我感觉不应该出现啊,我每次调用这个函数都会RE)
回复
共 17 条回复,欢迎继续交流。
正在加载回复...