java二进制搜索树删除两个孩子

时间:2013-03-03 17:58:24

标签: java binary-search-tree

我写了两个案例的代码,你必须找到后继者,然后再将其移动。它似乎工作,但当我打印出树时它会生成两个孩子。例如,我的树是

        /
       18
      /  \
     17  19

这只是我正在处理的树的一部分,当我尝试删除它时删除它但是当我打印出树时打印输出是17 17 19 19.下面是我的代码:

System.out.println("what is t " + T.getData()); 
System.out.println("what is t's right " + T.getRight().getData());
System.out.println("what is t's left " + T.getLeft().getData());
sucessor = findSucessor(T);
System.out.println("2 what is sucessor " + sucessor.getData());

T.getRight().setLeft(sucessor.getRight());
sucessor.setLeft(T.getLeft());
T.setData(sucessor.getData());

我的继任者一个人向右走,只要它不为空,所以在这种情况下继承人是19岁。

我认为它只是令我困惑的指针,我并没有切断链接,但我无法弄清楚在哪里。

1 个答案:

答案 0 :(得分:0)

你应该做那样的事情:

successor.getParent().replace(successor, successor.getRight());
successor.setLeft(T.getLeft());
successor.setRight(T.getRight();
T.getParent().replace(T, successor);