if(s[0]=='I'){
cin>>a>>b;
if(b==0)continue;
if(b>0){
int k=find(id[a]);
int r1,r2,r3,r4;
split(root,k+1,r3,r4);
split(r3,k,r2,r3);
split(r2,k-1,r1,r2);
root=merge(merge(merge(r1,r3),r2),r4);
}
else if(b<0){
int k=find(id[a]);
int r1,r2,r3,r4;
split(root,k,r3,r4);
split(r3,k-1,r2,r3);
split(r2,k-2,r1,r2);
root=merge(merge(merge(r1,r3),r2),r4);
}
}
如图所示,被注释掉的代码0pts,没有被注释的代码AC
两种代码我的思路相同,都是把要交换的两个数剪下来成为四棵树,再由题目要求顺序进行拼接
不知道错误在何处,求解答,谢谢大佬^_^
PS:如果要看全部代码我附在讨论区