c++ - 平衡 KD 树

标签 c++ tree median kdtree tree-balancing

因此,在平衡 KD 树时,您应该找到中位数,然后将所有较小的元素放在左子树上,将较大的元素放在右子树上。但是,如果您有多个元素与中位数具有相同的值,会发生什么情况?他们进入左子树,右子树还是丢弃它们?

我问是因为我试过做很多事情,它会影响我的最近邻搜索算法的结果,而且在某些情况下,树的给定部分的所有元素都将具有完全相同的值,所以我在那种情况下不知道如何将它们分开。

最佳答案

将它们放在哪里并不重要。最好让你的树保持平衡。因此,根据需要在左侧放置尽可能多的位置以保持最佳平衡!

如果您当前的搜索半径触及中位数,您将必须检查另一部分,这就是处理另一侧绑定(bind)对象所需的全部内容。这通常比在任何地方附加多个元素的一些复杂处理要便宜。

关于c++ - 平衡 KD 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13924334/

相关文章:

C++ 函数重载混淆了字符串引用和匿名函数

c - 伪代码中的红黑树插入和修复有问题

algorithm - 无序集合的中位数

ruby - 在 Ruby 中计算中位数

c++ - 在 OpenCL 中为嵌入式配置文件创 build 备上下文

c++ - 声明名称中带有范围解析运算符的指针

c++ - 没有友元函数的两个类的私有(private)操作

mysql - 有什么方法可以让我在只知道父 ID 的情况下通过一个查询获得一棵树?

python - 树hackerrank解决错误的故事

mysql - 如何通过使用 sql 对特定列进行分组来获取平均时间?