社区讨论

【问】关于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 条回复,欢迎继续交流。

正在加载回复...