【笔记】
待码!!!!!
把一个区间[t1,t2]表示为一个对象i,其各个域为low[i]=t1(低端点),high[i]=t2(高端点)。
我们说区间i和i'重叠,如果i∩i'≠ Ø。亦即如果low[i]<=high[i'],且low[i']<=high[i]。
任意两个区间i和i'满足区间三分法,也就是下列三种性质之一:
a) i 和 i' 重叠
b) i 在 i' 左边
c) i 在 i' 右边
区间树是一种对动态集合进行维护的红黑树,该集合中的每个元素x都包含一个区间int[x]。区间树支持下列操作:
INTERVAL-INSERT(T,x):将包含区间域int的元素x插入到区间树T中。
INTERVAL-DELETE(T,x):从区间树中删除元素x。
INTERVAL-SEARCH(T,i):返回一个指向区间树T中元素x的指针,使int[x]与i重叠;若集合中无此元素存在,则返回nil。
基础数据结构:红黑树,每个结点x包含一个区间域int[x],x的关键字为区间的低端点low[int[x]]。
附加信息:max[x],即以x为根的 子树中所有区间的端点的最大值。
对信息的维护:max[x] = max{ high[int[x]], max[left[x]], max[right[x]] }
设计新的操作:SEARCH,若left[x]!=nil且max[left[x]]>=low[i]则向右子树查询。
【练习】
14.3-1 写出作用于区间树的结点、并于O(1)时间内更新max域的LEFT-ROTATE的伪代码。
先维护旋转后的子树,在维护新的根。