只是为了验证,我是否正确,如果:
一般要求二叉树和N维度,但我想知道 KD-Tree 和 1 特别是维度数据。
答案 0 :(得分:2)
使用KD-Tree进行最近邻搜索的速度总是与在该阵列上使用二进制搜索一样快? (对于正常搜索当然相同)
正确。如果KD-Tree稍微退化(通过更新操作),你的情况会更糟。
范围搜索也是如此(获取范围x..y中的所有元素)。
正确。一旦用二进制搜索找到大于x的最小值,你就可以扫描直到你达到y。在KD树中,您必须遍历范围内的键所在的所有节点。
我可能拥有KD-Tree的唯一优势就是有了 频繁插入/删除数据。
这取决于你的优势。
KD-Trees中的插入和删除比排序数组更快。
然而,由于KD树将退化(如果您仅使用基本KD树而不对更新进行调整),KD树上的搜索将变得更慢,因为更多的插入/删除。二进制搜索将保持在O(log n)。
不是您的问题,但是,如果您使用的是1D,那么您很可能会同时使用Red-Black Trees,B+-Trees或类似的两个世界中最好的一个。