作者:DylanFrank(滔滔)
转载请注明出处 http://blog.youkuaiyun.com/dylan_frank/article/details/77934272
想象一下我们有如下两个任务:
- 我现在想骑一辆小黄车,我想查找离我最近的k辆小黄车.
- 找到百度地图中显示在屏幕上区域中的所有酒店
这两个任务均可以用kd-tree来解决
kd-tree 主要两个用途:
- 查询离某个点的最近的 k 个邻居,
- 搜索某个区域内的所有点.
后者在计算几何中称为范围查询,例如查询某个平面区域内的点的个数.
kd-tree是什么玩意儿
kd-tree就是高维平衡树……
kd-tree 是将平面点集进行一个分割,对某一个维度满足左子树和右子树的偏序关系
若你只对代码感兴趣请直接移动到文末
代码文末
建树
以二维平面为例
在根节点以某一维度对点集进行分割,比如以