C#中的平衡二维树实现

时间:2015-11-24 13:05:15

标签: c# algorithm binary-tree

我想请求一个关于实现一个二维树结构的建议,这个结构在一个平衡的区域中保持点。

我拥有的(例子):{0,2},{2,3},{5,3},{6,4}

我需要什么(如果我对平衡树有正确的话):

     {5, 3}
       |
{6, 4} - {2, 3}
           |
    {0, 2} - null

首先,我想知道我的预期结果是否正确,考虑到 root 节点的拆分维度为0。

然后,我想分享我的算法,并听听它是否是正确的实现方法:

  1. 将点列表传递给根对象
  2. 找到中间点并将其分配给root" point"
  3. 使用中位数分割点数列表
  4. 创建两个子对象" left"和"对"使用交换分割维度
  5. 将点列表传递给两个子对象
  6. 针对子对象转到第2点(为了此算法,现在成为 root 对象)
  7. 这是正确的方法吗?我应该用另一种方式吗?我正在搜索任何样本,但我只发现了类似的n维实现:

    https://code.google.com/p/kd-sharp/source/browse/trunk/KDTree/KDNode.cs

    这对我来说似乎过于复杂。

1 个答案:

答案 0 :(得分:0)

您描述的内容正是二维的KD树。

如果没有别的东西阻止你这样做,我会使用该库。