定义删除树节点方法
- 因为二叉树是单向的,所以要判断当前结点的子结点是否需要删除结点,而不能去判断当前这个结点是不是需要删除结点.
- 如果当前结点的左子结点不为空,并且左子结点 就是要删除结点,就将this.left = null; 并且就返回(结束递归删除)
- 如果当前结点的右子结点不为空,并且右子结点 就是要删除结点,就将this.right= null ;并且就返回(结束递归删除)
- 如果第2和第3步没有删除结点,就需要向左子树进行递归删除
- 如果第4步也没有删除结点,则应当向右子树进行递归删除.
public void delNode(int no) {
if(this.left != null && this.left.no == no) {
this.left = null;
return;
}
if(this.right != null && this.right.no == no) {
this.right = null;
return;
}
if(this.left != null) {
this.left.delNode(no);
}
if(this.right != null) {
this.right.delNode(no);
}
}
定义二叉树中的删除结点方法
public void delNode(int no) {
if(root != null) {
if(root.getNo() == no) {
root = null;
} else {
root.delNode(no);
}
}else{
System.out.println("空树,不能删除~");
}
}