pair,二叉搜索树(BST),set,map,AVL树,红黑树,B树,B+树

Huffman 树

并查集

字典

跳表

散列

pair,二叉搜索树(BST),set,map,t红黑树,AVL树,B树,B+树

AVL树的定义:

In computer science, an AVL tree is a self-balancing binary search tree.

来自维基百科 AVL tree - Wikipedia

还有,所谓的平衡二叉树,在维基百科里的叫法是Self-balancing binary search tree (Self-balancing binary search tree)。

结论:

AVL tree只是Self-balancing binary search tree 的子集,

而Self-balancing binary search tree 是 binary search tree 的子集。

AVL树/红黑树

为什么不使用AVL树而使用红黑树?

红黑树和AVL树都是最常用的平衡二叉搜索树,它们的查找、删除、修改都是O(lgn) time

AVL树和红黑树有几点比较和区别:

(1)AVL树是更加严格的平衡,因此可以提供更快的查找速度,一般读取查找密集型任务,适用AVL树。

(2)红黑树更适合于插入修改密集型任务。

(3)通常,AVL树的旋转比红黑树的旋转更加难以平衡和调试。

总结:

(1)AVL以及红黑树是高度平衡的树数据结构。它们非常相似,真正的区别在于在任何添加/删除操作时完成的旋转操作次数。

(2)两种实现都缩放为a O(lg N),其中N是叶子的数量,但实际上AVL树在查找密集型任务上更快:利用更好的平衡,树遍历平均更短。另一方面,插入和删除方面,AVL树速度较慢:需要更高的旋转次数才能在修改时正确地重新平衡数据结构。

(3)在AVL树中,从根到任何叶子的最短路径和最长路径之间的差异最多为1。在红黑树中,差异可以是2倍。

(4)两个都给O(log n)查找,但平衡AVL树可能需要O(log n)旋转,而红黑树将需要最多两次旋转使其达到平衡(尽管可能需要检查O(log n)节点以确定旋转的位置)。旋转本身是O(1)操作,因为你只是移动指针。

B树,B+树(22 封私信 / 80 条消息) b树和b+树及其区别? - 知乎 (zhihu.com)

相关推荐
鱼跃鹰飞25 分钟前
Leetcode1891:割绳子
数据结构·算法
无限进步_3 小时前
【C语言&数据结构】对称二叉树:镜像世界的递归探索
c语言·开发语言·数据结构·c++·git·算法·visual studio
玖剹3 小时前
队列+宽搜(bfs)
数据结构·c++·算法·leetcode·宽度优先
C++ 老炮儿的技术栈5 小时前
什么是通信规约
开发语言·数据结构·c++·windows·算法·安全·链表
萧瑟其中~5 小时前
二分算法模版——基础二分查找,左边界查找与右边界查找(Leetcode的二分查找、在排序数组中查找元素的第一个位置和最后一个位置)
数据结构·算法·leetcode
码农小韩6 小时前
基于Linux的C++学习——动态数组容器vector
linux·c语言·开发语言·数据结构·c++·单片机·学习
alonewolf_997 小时前
深入剖析MySQL索引底层:B+树、联合索引与跳跃扫描原理全解
数据库·b树·mysql
想做后端的小C7 小时前
408 数据结构:数据结构三要素——逻辑结构、物理(存储)结构和运算操作
数据结构
栈与堆7 小时前
LeetCode-1-两数之和
java·数据结构·后端·python·算法·leetcode·rust