二叉搜索树(Binary Search Tree)

二叉搜索树(Binary Search Tree)

二叉搜索树是一种特殊的二叉树,它的每个节点的键都大于其左子树中的任意节点的键,而小于右子树的任意节点的键。

下面是一个二叉搜索树的示例:
请添加图片描述

二叉搜索树初始化

创建树节点的静态内部类,初始化根节点root

BSTreeNode root;

static class BSTreeNode {
   
   
    int key;
    Object value;
    BSTreeNode left;
    BSTreeNode right;

    public BSTreeNode(int key) {
   
   
        this.key = key;
    }

    public BSTreeNode(int key, Object value) {
   
   
        this.key = key;
        this.value = value;
    }

    public BSTreeNode(int key, Object value, BSTreeNode left, BSTreeNode right) {
   
   
        this.key = key;
        this.value = value;
        this.left = left;
        this.right = right;
    }
}

二叉搜索树的操作

二叉搜索树支持多种操作,包括插入、查找、删除等。以下是这些操作的Java实现。

插入操作(put)

插入操作是将一个新的键值对插入到二叉搜索树中。如果树中已经存在相同的键,那么新的值将替换旧的值。

public boolean put(int key, Object value) {
   
   
    BSTreeNode node = root;
    BSTreeNode parent = null;
    // 通过循环找到要插入的位置
    while (node != null) {
   
   
        parent = node;
        if (key > node.key)
            node = node.right;
        else if (key < node.key)
            node = node.left;
        else {
   
   
            // 如果找到了相同的键,就更新值
            node.value = value;
            return true;
        }
    }
    // 创建新的节点
    BSTreeNode bsTreeNode = new BSTreeNode(key, value);
    // 如果树为空,就让新节点成为根节点
    if (parent == null) {
   
   
        root = bsTreeNode;
    } else if (key > parent.key) {
   
   
        parent.right = bsTreeNode;
    } else {
   
   
        parent.left = bsTreeNode;
    }
    return true;
}

查找操作(get)

查找操作是根据键在二叉搜索树中查找对应的值。

public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林小果呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值