平衡KD树

use*_*952 3 c++ tree kdtree median tree-balancing

因此,在平衡KD树时,您应该找到中位数,然后将所有较少的元素放在左子树上,而将更大的元素放在右侧.但是如果你有多个与中位数具有相同价值的元素,会发生什么?他们是左边的子树,右边还是丢弃它们?

我问,因为我尝试过多次操作,它会影响我最近邻搜索算法的结果,并且在某些情况下,树的给定部分的所有元素都将具有完全相同的值,因此我不这样做知道在这种情况下如何拆分它们.

Ano*_*sse 5

你把它们放在哪里并不重要.最好保持树木平衡.因此,尽可能多地放置在左侧以保持最佳平衡!

如果您当前的搜索范围接触到中位数,则必须检查另一部分,这是您在另一侧处理绑定对象所需的全部内容.这通常比在任何地方附加多个元素的一些复杂处理便宜.