Java-二叉树删除节点

it2025-05-04  10

思路分析

首先先处理: 考虑如果树是空树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) { //如果只有一个root节点,要立即判断root是否为要删除的节点 if(root.getNo()==no) { root=null; }else { root.delNode(no); } }else { System.out.println("空树, 不能删除"); } }
最新回复(0)