给定一个二叉树.
1.删除叶子节点,直接将叶子节点设为null即可,
2.删除有一个孩子的节点,例如4,有一个左儿子,只需要即将左儿子赋值给它即可.
3,删除有两个孩子的节点,这事要将其中一个孩子的值赋给它,在删除赋值的节点.
private BinaryNode<AnyType> remove(AnyType x,BinaryNode<AnyType> t){
if(t == null){ //该情况表示没有找到x,什么操作也不做.
return t;
}
int compareResult=x.compareTo(t.element); //用x与t的值进行对比
if(compareResult<0){ //代表x比t的值小,应该从t的左子树进行寻找
t.left=remove(x,t.left);
}else if(compareResult>0){
t.right=remove(x,t.right);
}else if(t.left!= null && t.right != null){ //两个孩子均不为空
t.element=findMin(t.right).element;
t.right=remove(x,t.right);
}else{
t=(t.left!=null)? t.left: t.right; //有一个孩子或一个孩子都没有
}
return t;
}