一种奇怪的数据结构:用来查询某点到该点集中的最小距离。
下面来自Tsinghua, IIIS的pdf:
把点按x坐标排序,设Am为中位数,左边的集合为L,右边的集合为R。
建一棵以m为根的树,根节点储存所有点的包围框(用来剪枝)。
递归地对L,R建树。下一层应该按y坐标排序,再下层按x坐标,以此类推(还有一种随机按x或y排序)。
查询:对于一个询问点Q,首先用Q与Am的距离更新答案,然后遍历两个子树。
假如Am是x坐标的中位数。如果x(Q)<x(Am),则先遍历左子树,否则遍历右子树。
在遍历一个子树的时候,先查询到Q到该子树包围框的最短距离,如果这个距离也无法更新答案,就剪枝。