二叉树学习(二)删除节点之单个叶子节点

这篇博客详细介绍了如何在二叉树中删除单个叶子节点的两种情况:1) 删除没有子节点的叶子节点,通过设置父节点的相应子节点为null来实现;2) 删除有一个子节点的节点,将子节点替换到被删除节点的位置。文中提到了搜索和删除的具体步骤,并指出只实现了第一种情况的删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔记示意图

第一种删除叶子节点()

思路:
1.找到要删除的叶子
2.找到叶子的父节点parent
3.判断叶子是parent的左子节点还是右子节点4根据前面的情况对应删除
左子节点 parent.left=null
右子节点 parent.lright=null

第二种情况:
1.找到要删除的节点targetnode
2.找到叶子的父节点parent
3.确定targetnode的子节点是左子节点还是右子节点
(4)确定target是parent的左子节点还是右子节点
(5)如果targetnode有左子节点
5.1如果targetnode是parents的左子节点
Parent,left=targetnode.left
5.2如果targetnode是parents的右子节点
Parent.right=targetnode.left
(6)如果targetnode有右子节点
如果targetnode是parent的左子节点
Parent,left=targetnode.right
如果targetnode是parent的右子节点
Parent,right=targetnode.right
情况三 删除有两颗子树的节点

思路
(1)找到要删除的节点targetnode
2.找到叶子的父节点parent
(3)从targetnode的右子树找到最小的节点
(4)用一个临时变量,将最小节点的值保存在tamp中
(5)删除该最小节点
(6)targetnode.value=temp
本次新增了search和searchparent和delNode方法
注意:只实现了第一种情况的删除

public class BST {
   
    public static void main(String[] args) {
   
           int[]arr={
   7,3,10,12,5,1,9,2};
           BinarySortTree binarySortTree=new BinarySortTree();
        for (int i = 0; i < arr.length; i++) {
   
            binarySortTree.add(new Node(arr[i]));
        }
        System.out.println("中序遍历");
        binarySortTree.infixOrder();
        //删除节点
        System.out.println("删除后");
        binarySortTree.delNode(5);
        binarySortTree.infixOrder();
    }
}
class  BinarySortTree{
   
    private Node root;
    public Node searc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值