删除节点,如果节点为叶子节点就直接删除,如果不是叶子节点就将整颗树删除
在二叉树类中判断当前节点和删除的节点是否相等,相等就直接置为空,在节点类Hero中就是判断左边孩子和右边孩子是否为要删除的节点。
public void del(int no){
if (this == null){
return;
}
if (this.head.getId() == no){
this.head = null;
}else {
this.head.del(no);
}
}
在节点类中判断该节点的左右子孩子是否为要删除的元素,如果是就置为空,不是就递归的判断左边的和右边的孩子。
//删除节点
public void del(int no){
if (this.left!= null && this.getLeft().getId() == no){
this.setLeft(null);
return;
}
if (this.right != null && this.getRight().getId() == no){
this.setRight(null);
return;
}
if (this.left!= null){
this.left.del(no);
}
if (this.right != null){
this.right.del(no);
}
}



