前置知识:普通平衡树。
实际上,平衡树能做到的操作不只有插入删除,查排名查值,前驱后继这些。
如果我们把平衡树移到区间上,我们甚至能够支持比线段树更强的操作——区间翻转。
这就是文艺平衡树这道题了。
1. 区间树
首先我们来明确一下区间树的概念。
顾名思义,区间树就是用来维护区间的。
具体地,我们规定平衡树的中序遍历得到的数列就是我们所维护的数组。
比如下面这一棵树:
中序遍历得 \(1\ 3\ 5\ 4\),也就是说这棵平衡树就维护了 \(1\ 3\ 5\ 4\) 这个数组。
需要注意的是,这里我们的平衡树只是用来维护数列的一个结构;可以看到,数列中的数本身是并不符合 BST 特性的。
或者说,满足 BST 特性的是数组下标,而不是数组中的值。