splay树基本思路

对区间[begin,end]进行修改:

1.先将l-1旋转到根,然后将r+1旋转到根的右子节点,这是root->rightChd->leftChd所代表的子树就包括了[begin,end]的所有元素

给区间[begin,end]添加一个值:先执行操作1 然后给root->rightChd->leftChd的标记上加上要添加的值,并且把root->rightChd->leftChd的值加上要加的值,然后再每次进行旋转时将某个点的标记下传

查询:每个点设置一个值,表示以该节点为根的子树的总和,并且在执行旋转时维护

区间翻转待添加

区间删除: 执行操作1 然后删掉root->rightChd->leftChd即可

区间插入:首先把要插入的区间构建成一棵BST 然后把要插入的位置

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理