对KDTree讲的比较好:
https://blog.csdn.net/silangquan/article/details/41483689
每一个节点有几个值,那K值就等于多少,上图为例,每个节点有3个,所以K=3;在树的第n层,第 n%K 项被用粗体显示,而这些被粗体显示的树就是作为二叉搜索树的key值,对于这一层的节点的的左子树上的子节点的K维都小于父节点的K维,右子树则大于;比如第2层,2%3=2,所以要看第二维,这时对于(2,3,7)节点,3就是key,它的左子树(2,1,3)的第2维为1,小于3;而右子树,(2,4,5)的第二维4,则大于3,而且(2,4,5)的所有子节点的第二维都大于3;
如何形成KDTree:
首先选择最初的分割维度,上面那个例子选择的是X轴为初始轴,但是实际上,我们应该选择范围最大的那个轴作为初始轴,选其这一维度的中值作为初始节点,然后小于这个值的,安排在左子树,大于这个值的,安排在右子树,然后换下一个维度轴,以此类推,就可以形成整棵树;
PCL中kd_tree模块:
https://www.cnblogs.com/li-yao7758258/p/6437440.html