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)

相关推荐
动词ing1 小时前
【学习笔记】数据结构栈与队列(栈先进后出+队列先进先出+括号匹配+消消乐模型)
数据结构·笔记·学习
a187927218312 小时前
【算法】链表(二):链表上的双指针——变速、异链与定距,和一份路程账本
数据结构·算法·leetcode·链表·go·指针·环形链表
zcmodeltech3 小时前
火电厂模型能演示冷态启动和故障处理吗?——基于STM32与Modbus RTU的集控实训控制系统设计
数据结构·stm32·单片机·嵌入式硬件·能源
Doubbbbbbble云3 小时前
区间合并问题的常见算法模式与优化思路4
java·数据结构·算法
David猪大卫3 小时前
【C++修炼】哈希表的实现
数据结构·c++·笔记·学习·算法·哈希算法·散列表
linx2955 小时前
单元九 · 零基础路线图-第 7–9 周·类与 RAII
c语言·开发语言·数据结构·c++·嵌入式硬件·算法
布莱克6055 小时前
C++ 七大排序算法详解:选择、冒泡、插入、计数、堆、快速与归并排序
数据结构·c++·算法·排序算法
科学实验家7 小时前
最小生成树:Prim,kruskal
数据结构·c++·算法
小孩玩什么7 小时前
深入理解字符串匹配算法:BF算法,KMP算法
java·c语言·开发语言·数据结构·c++·算法
淡海水9 小时前
10-05-高级-模式匹配-CSharp如何改变与数据结构的交互方式
数据结构·算法·c#·模式匹配