基于二分查询树(BinarySearchTrees)实现的键值对表(symbole-table)

本文介绍了二分查询树(Binary Search Trees, BSTs)在实现键值对表(symbol-table)中的优势和潜在问题。尽管BSTs在随机分布的键下能提供快速搜索和插入,但最坏情况下的性能可能较差,特别是在键按顺序插入时。文章深入探讨了BST的基本结构、查询与插入操作,以及最大值、最小值、地板和天花板的概念。同时,还涉及查询第k个元素、元素排名等功能,以及如何遍历并查询BST中一定范围内的所有值。" 115745944,10545285,Java构建ECharts饼图数据,"['前端开发', '后端开发', '数据可视化', 'JSON', 'ECharts']
摘要由CSDN通过智能技术生成

概述

    二叉树BSTs很容易实现,并且如果BSTs的键插入的顺序非常接近随机模型,那么BSTs能够提供快速搜索和插入。

    很多程序开发者选用BSTs来实现symbol-table(键值对表),因为这样的实现支持快速的rank(查询第几位的值),select、delete、和范围查询操作。

    但是,最坏的情况下,使用二叉树,其性能仍然是不能让人忍受的。基于二叉树的实现,好的性能是基于键基本满足随机的键,这样能保证树不可能包含太多的长的路径。

     使用快速排序的时候,我们能够使随机化;但是使用一个symbole-table的API,我们没有这种自由,因为客户控制着混合操作。

    实际上,二叉树最坏的情况不是不可能出现——当客户按照正向顺序或逆向顺序插入键(keys)的时候,最坏的情况就出现了。

剖析二分查询树

每个节点都有两个分叉;

左分叉上的节点值小于父节点的值,右分叉上的节点值大于父节点上的值;

从上往下将二分查询树的节点投影到一条线上,从左到右,节点的值依次增大;

任何一个节点x上,其元素的个数为: size(x)=size(x.left)+size(x.right)+1

一、基本的结构

public class BinarySearchTreeSymbolTable<Key extends Comparable<Key>, Value> {

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值