二分搜索树 03 更优化的添加

本文介绍了一种在二叉搜索树(BST)中通过递归算法添加新元素的方法,避免了对空根节点的特殊处理,使代码更加简洁高效。

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

BST中的接口 - 完全将问题抛给递归算法

  • 直接将问题丢给一个更厉害的递归方法,从而省掉判断BST中root == null的情况;
  • 先拎着BST中root,把整棵树丢进递归方法中,返回的新树再让root接着;
// 向二分搜索树中添加新的元素e
public void add(E e){
    root = add(root, e);
}

更厉害的递归方法 - Node add(Node node, E e)

  • 向以node为根的二分搜索树中插入元素e,并返回插入新节点后二分搜索树的根;
  • 不能再缩小的基本问题是:向null中插入新的节点;
  • 规模更小的同一个问题是:将元素e插入node的左子树或右子树;
// 向以node为根的二分搜索树中插入元素e,递归算法
// 返回插入新节点后二分搜索树的根
private Node add(Node node, E e){
    if(node == null){
        size ++;
        return new Node(e);
    }

    if(e.compareTo(node.e) < 0)
        node.left = add(node.left, e);
    else if(e.compareTo(node.e) > 0)
        node.right = add(node.right, e);

    return node;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值