splay只有该点的父亲节点不是根节点的时候才转两次
for(int y = fa(x); !IsRoot(x); rotate(x), y = fa(x))
if(!IsRoot(y))//注意
rotate( ident(x) == ident(y) ? y : x );
access的时候需要将节点转到全局的根,所以循环边界为x==0
而splay的时候只要转到当前根就可以了
access: for(int y = 0; x; x = fa(y = x))
splay: for(int y = fa(x); !IsRoot(x); rotate(x), y = fa(x))
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有