KD-Tree是一种由二叉搜索树推广而来的用于多维检索的树的结构形式(K即为空间的维数)。
它与二叉搜索树不同的是它的每个结点表示k维空间的一个点,并且每一层都根据该层的分辨器(discriminator)对相应对象做出分枝决策。
顶层结点按由分辨器决定的一个维度进行划分,第二层则按照该层的分辨器决定的一个维进行划分···,以此类推在余下各维之间不断地划分。
直至一个结点中的点数少于给定的最大点数时,结束划分。
KD-Tree的分辨器根据不同的用途会有不同的分辨器,最普通的分辨器为:nmodk(树的根节点所在层为第0层,根结点孩子所在层为第1层,以此类推) 即:若它的左子树非空,则其左子树上所有结点的第i维值均小于其根结点的第i维值;
若它的右子树非空,则其右子树上所有结点的第i维值均大于其根结点的第i维值;
并且它的左右子树也分别为KD-Tree。
1