BST比哈希的优势

news/2024/12/22 9:05:33/

对于search insert delete操作, Hash Table的时间复杂度是O(1)。

对于BST(self-balancing Binary Search Tree, 比如 红黑树,AVL树等)时间复杂度是O(LgN)。

看起来Hash Table在所有操作中都要优于BST的。那BST有什么优势呢?

1. 获取所有的有序的key

我们可以从BST树种获取所有的有序的key, 不需要太多额外的操作。 但是没有办法方便的从HashTable中获取到所有的有序key。

2. 范围类的操作

做排序分析,找比某个值大(或小),做范围查询,用BST做是很容易的。 like操作, 排序,也可以用BST搞定。 但是Hast table是做不了的。

3. 实现

BST是很容易实现的, 我们可以用我们自己的方式实现BAST。 但是实现HASH,我们必须要依赖于编程语言提供的类库。

4. 可控

对应BST,所有的操作都可以保证在O(LgN)的时间内完成。 但是对于Hash, 平均时间可能是O(1),但有时是非常耗时的,特别是在table resize的时候。


http://www.ppmy.cn/news/759186.html

相关文章

BST、AVL、红黑树

关于树的名词 节点、根节点、父节点、子节点、叶子节点、节点权、层、子树、树的高度、森林 二叉树 满二叉树 所有叶子节点都在最后一层,并且节点总数为2^n - 1,n为层数 完全二叉树 叶子节点都在最后一层或倒数第二层,且最后一层只有叶子…

BST

Closest Binary Search Tree Value 所谓 “最近的点”,可能是 parent ,可能是 child,可能在左边,也可能在右边。 所以一要存好 prev; 二要两边都探,不能沿着一边硬走。 为什么写成两个函数?因为这里是pr…

二叉搜索树BST

二叉搜索树(英语:Binary Search Tree),也称二叉查找树、有序二叉树(英语:ordered binary tree),排序二叉树(英语:sorted binary tree)&#xff0c…

BST+AVL+SB

BST 性质 左子树<根节点、右子树>根节点 用途 解决排名相关的检索需求 基本操作 插入操作 一直插入到叶子节点 删除操作 1、删除叶子节点&#xff1a;直接删除&#xff0c;并将其父节点的孩子节点置空 2、删除度为1的节点&#xff1a;删除后&#xff0c;将孩子…

bst java_Java经典算法:最大的BST子树

给定一棵二叉树&#xff0c;找到最大的子树&#xff0c;即二叉搜索树(BST)&#xff0c;其中最大表示其中的节点数最多的子树。 Java解决方案 class Wrapper{ int size; int lower, upper; boolean isBST; public Wrapper(){ lower Integer.MAX_VALUE; upper Integer.MIN_VALU…

二叉检索树(BST)

使用无序表和有序表组织的数据&#xff0c;不是查找时间复杂度偏高&#xff0c;就是插入时间复杂度偏高&#xff0c;而接下来将要介绍的二叉检索树&#xff08;BST&#xff09;则能很好的解决以上问题。二叉检索树又称二叉查找树、二叉排序树。 BST性质 BST是满足下面所给出条…

玩转数据结构(十三)构建BST

1、二分搜索树简介 二分搜索树又称为二叉搜索树、排序二叉树等&#xff0c;是指一棵空树或者具有以下性质的二叉树&#xff1a; 若任意一个结点的左子树不为空&#xff0c;则左子树所有结点的值均小于它的根结点的值若任意一个结点的右子树不为空&#xff0c;则右子树所有结点…

ubuntu16.04修改PDT时间为当期时区

如下图&#xff0c;虚拟机ubuntu16.04 本来是PDT时间 运行命令 timedatectl set-timezone Asia/Shanghai 再查看&#xff0c;已经改成上海时区了