AVL树、红黑树、B/B+树和Trie树的比较
2018-03-12 23:32
549 查看
AVL树、红黑树、B/B+树和Trie树的比较
AVL树
最早的平衡二叉树之一。AVL是一种高度平衡的二叉树,所以通常的结果是,维护这种高度平衡所付出的代价比从中获得的效率收益还大,故而实际的应用不多,更多的地方是用追求局部而不是非常严格整体平衡的红黑树。当然,如果场景中对插入删除不频繁,只是对查找特别有要求,AVL还是优于红黑的。使用场景:Windows对进程地址空间的管理用到了AVL树。
红黑树
平衡二叉树,通过对任何一条从根到叶子的简单路径上各个节点的颜色进行约束,确保没有一条路径会比其他路径长2倍,因而是近似平衡的。所以相对于严格要求平衡的AVL树来说,它的旋转保持平衡次数较少。用于搜索少,插入删除次数多的情况下我们就用红黑树来取代AVL。使用场景
广泛用在C++的STL中。map和set都是用红黑树实现的著名的linux进程调度Completely Fair Scheduler,用红黑树管理
进程控制块
epoll在内核中的实现,用红黑树管理事件块
nginx中,用红黑树管理timer等
Java的TreeMap实现
B树、B+树
它们特点是一样的,是多路查找树,一般用于数据库系统中,为什么,因为它们分支多层数少呗,都知道磁盘IO是非常耗时的,而像大量数据存储在磁盘中所以我们要有效的减少磁盘IO次数避免磁盘频繁的查找。使用场景
主要用在文件系统以及数据库中做索引等,比如Mysql:B-Tree Index in MySql像mysql的数据库定义是可以指定B+ 索引还是hash索引。
Trie树
又名单词查找树,一种树形结构,常用来操作字符串。它是不同字符串的相同前缀只保存一份。相对直接保存字符串肯定是节省空间的,但是它保存大量字符串时会很耗费内存。类似的有前缀树(prefix tree),后缀树(suffix tree),radix tree(patricia tree, compact prefix tree),crit-bit tree(解决耗费内存问题),以及前面说的double array trie。
使用场景
字符匹配前缀树:字符串快速检索,字符串排序,最长公共前缀,自动匹配前缀显示后缀。
后缀树:查找字符串s1在s2中,字符串s1在s2中出现的次数,字符串s1,s2最长公共部分,最长回文串。
radix tree:linux内核,nginx。
IP选路
也是前缀匹配,一定程度会用到trie
本Markdown编辑器使用[StackEdit][6]修改
而来,用它写博客,将会带来全新的体验哦:
相关文章推荐
- AVL树、红黑树、B/B+树和Trie树的比较
- AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中?
- AVL树、红黑树、B/B+树、Trie树
- 二叉查找树,红黑树,AVL树,B~/B+树(B-tree),伸展树——优缺点及比较
- AVL树,红黑树,B树,B+树,Trie树应用场景简介
- AVL树,红黑树,B树,B+树,Trie树应用场景简介
- AVL树、红黑树、B树、B+树、Trie树都分别应用在哪些现实场景中?
- AVL树,红黑树,B-B+树,Trie树原理和应用
- 二叉查找树,红黑树,AVL树,B~/B+树(B-tree),伸展树——优缺点及比较
- AVL树,红黑树,B-B+树,Trie树原理和应用
- 二叉查找树,红黑树,AVL树,B~/B+树(B-tree),伸展树——优缺点及比较
- 二叉查找树,红黑树,AVL树,B~/B+树(B-tree),伸展树——优缺点及比较
- AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中
- AVL树,红黑树,B树,B+树,Trie树应用场景简介
- AVL树,红黑树,B树,B+树,Trie树应用场景简介
- 二叉查找树,红黑树,AVL树,B~/B+树(B-tree),伸展树——优缺点及比较
- B树、B-树、B+树、B*树、红黑树、 二叉排序树、trie树Double Array 字典查找树简介
- 红黑树(red-black tree)算法,附AVL树的比较zz
- 查找结构 动态查找树比较 树(BST),平衡二叉查找树(AVL),红黑树(RBT),B~/B+树(B-tree)
- 二叉查找树(BST),平衡二叉查找树(AVL),红黑树(RBT),B~/B+树(B-tree)的比较