我写了两个案例的代码,你必须找到后继者,然后再将其移动。它似乎工作,但当我打印出树时它会生成两个孩子。例如,我的树是
/
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岁。
我认为它只是令我困惑的指针,我并没有切断链接,但我无法弄清楚在哪里。
答案 0 :(得分:0)
你应该做那样的事情:
successor.getParent().replace(successor, successor.getRight());
successor.setLeft(T.getLeft());
successor.setRight(T.getRight();
T.getParent().replace(T, successor);