基于索引的kd树实现期间子树的意外输出

问题描述

我正在尝试实现一种有效的kd-tree,该方法使用索引而不是将点存储在其子树的结构中。 在创建左右子树的过程中,它连接到所需的点,但不会连接到其他所需的点。对于某些数据,结果没有任何意义。在当前的实现中,让我们至少举例说明三点 (5,4),(9,6),(7,2)。这棵树目前正在构建这样的东西:

}}

虽然应该是这样的:

#
#          (9,6)[1]
#           /  \
#          /    B
#         /
#     (7,2)[2]  (5,4)[0]
#       /  \
#       B  B

其中# # (7,2)[2] # / \ # / \ # / \ # (5,4)[0] (9,6)[1] # / \ / \ # B B B B 是空白/空值,索引在方括号(B)中给出。添加更多数据可以使树的结构变得荒谬。

为了找到中值,我使用了Quickselect method代码类似于此处给出的伪代码

给出的完整代码here

关注的功能[]kdtree_median_find。有人可以建议我在逻辑上错在哪里吗?

请询问注释中是否有不清楚之处。我将尝试进一步解释:-)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)