我实现了一棵平衡的KD-Tree以及它的k近邻搜索算法,并按照传统树的方式作为标准树进行了实现,即我创建了像以下代码示例中的节点结构体:
struct KDNode{
int level; //used for x,y,z axis splitting
Point pos;
KDNode *left, *right; //Child nodes
}
...然后将树作为实际的树数据结构存储在内存中。然而,我最近听说可以将KD-Tree存储为大型数组,而无需创建任何节点对象,并且这种构建方法在内存和时间性能方面都更加高效。
然而,我不确定这样的构建方式如何工作,并且找不到详细说明如何以此方式实现KD-Tree的任何在线信息。
所以我的问题是,如何在不使用节点的情况下将KD-Tree实现为单一维数组?