两条不变量 ​
给定平面点集
- y-heap:每个节点存当前子集 y 最小的点,故子树任一点的 y 不小于根点 y。
- x-search decomposition:移除根点后,以剩余点的 x 中位数
split划分左右子集,左侧,右侧 ,并递归构造。
节点本身的 x 不必位于左右点之间;搜索依据的是 split 和子树 x 范围,而不是把所有存储点按中序排成普通 BST。树高
三边查询 ​
本页查询
先沿 x 分割找到
Heap-report 查看子树根:若根 y 已大于
最坏时间报告
五点真例 ​
设
根保存全局最小 y 点
报告
若查询上界改为
重复坐标与边界 ​
相同 x 用 (x,id) 全序分到唯一侧,查询边界再按原 x 判断;相同 y 不影响非严格堆序。若省略 tie-breaking,中位分割可能把同一逻辑点重复放入两侧。
结构专为一侧 y 无界的 3-sided reporting。一般四边矩形
与 Treap、Range Tree 的区分 ​
Treap按搜索键形成 BST,并以独立随机优先级保持期望平衡;优先级不属于输入几何坐标。PST 的 y 是数据本身,堆序用于范围剪枝,而平衡来自 x 中位分解,不是随机性。
Range Tree用
参考资料
- Edward M. McCreight, “Priority Search Trees,” SIAM Journal on Computing 14(2), 1985.
- Mark de Berg et al., Computational Geometry: Algorithms and Applications, 3rd ed., Springer, 2008.
- Pankaj K. Agarwal and Jeff Erickson, “Geometric Range Searching and Its Relatives,” 1999.