/// <summary> /// 返回距离x最近的k个点(不包括x本身) /// </summary> /// <param name="k">近邻数量</param> /// <param name="x">需要查询的点</param> /// <returns>近邻点的index数组</returns> public int[] KQuery(int k, KD_DataType x) { check = new List<int>(); check.Add(x.index); int[] result = new int[k]; curQuery = x; for (int i = 0; i < k; i++) { curNearestDist = double.MaxValue; Query(root); check.Add(curNearestNode); result[i] = curNearestNode; } return result; }
public KD_Tree(KD_DataType[] s) { dataset = s; dimension = s[0].value.Count(); root = BuildTree(0, s.Count() - 1); }