从2d二叉搜索树中删除节点

时间:2012-02-28 18:47:27

标签: data-structures binary-search-tree kdtree

我想知道是否有人可以提供一些从2d二叉搜索树中删除节点的有用见解。

我理解有四种情况,第一种是我完成的:

  1. 删除没有子节点(叶子)的节点,简单,只需将指向该节点的指针设置为null。
  2. 删除左节点上有一个子节点的节点,右节点为空。
  3. 删除右节点上有一个子节点的节点,左节点为空。
  4. 删除左右两个子节点。
  5. 我不确定如何准确地做2,3和4.我试图迭代地做,然而,这似乎并没有起作用。我假设这必须递归完成。有人可以详细说明如何做到这一点。这是在java中,但不应该重要:)

1 个答案:

答案 0 :(得分:0)

在2D树中,所有值都存储在叶节点中。内部节点仅用作定位叶节点的路径。具体而言,内部节点定义包含基础数据的半平面。我们只处理数据;我们不修改数据结构本身的结构元素。因此,只有上述案例1成立。所有其他都无关紧要。