我只是想让你快速浏览我的AVL-Tree,我正在编程。我写了一个AVL树,因此删除了一个方法。这个方法的问题在于,节点的父节点的另一个孩子(请再次阅读,对不起,这听起来有点复杂),我删除了,没有打印出来,所以被删除,我不知道为什么。代码如下:
@Override
public void remove(E value) throws NoSuchElementException {
if(!contains(value)) throw new NoSuchElementException("Doesn't exist!");
else{
root = remove(finds(value).value, root);
}
}
private Node remove(E x, Node t){
if (t==null) {
System.out.println("Sorry but you're mistaken, " + t + " doesn't exist in this tree :)\n");
return null;
}
System.out.println("Remove starts... " + t.value + " and " + x);
if (x.compareTo(t.value) < 0 ) {
t.left = remove(x,t.left);
}
else if (x.compareTo(t.value) > 0) {
t.right = remove(x,t.right);
}
else if(t.left != null) {
t.value = biggest(t.left).value;
remove(t.value, t.left);
}
else
t = (t.left != null) ? t.left : t.right;
return t;
}
AuDTree<Integer> a = new AuDTree<Integer>();
a.insert(7);
a.insert(5);
a.insert(9);
a.insert(4);
a.insert(6);
a.insert(10);
a.insert(8);
a.remove(4);
这是测试。当我删除&#34; 4&#34;时,&#34; 6&#34;也被删除了。当我删除&#34; 8&#34;时,&#34; 10&#34;被删除,等等。 AVL-Tree看起来像这样:
7
5 9
4 6 8 10
事先谢谢你:)