思路分析
首先先处理: 考虑如果树是空树root,如果只有一个root节点,则等价二叉树置空 然后进行下列操作: 1.因为我们的二叉树是单向的,所以我们判断当前节点的子节点是不是需要删除的节点,而不能判断当前节点是不是需要删除的节点 2.如果当前节点的左子节点不为空,并且左子节点就是要删除的节点,就将this.left=null,并返回 3.如果当前节点的右子节点不为空,并且右子节点就是要删除的节点,就将this.right=null,并返回 4.如果第二步和第三步没有删除节点,那我们就向左子树进行递归 5.如果第四步也没有删除节点,则应当向右子树进行递归
代码实现
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
);
return;
}
if(this.right
!=null) {
this.right
.delNode(no
);
return;
}
}
public void delNode(int no
) {
if(root
!=null) {
if(root
.getNo()==no
) {
root
=null;
}else {
root
.delNode(no
);
}
}else {
System
.out
.println("空树, 不能删除");
}
}
转载请注明原文地址: https://lol.8miu.com/read-25535.html