红黑树 B树 区别


红黑树:linux

    平衡二叉树,经过对任何一条从根到叶子的简单路径上各个节点的颜色进行约束,确保没有一条路径会比其余路径长2倍,于是是近似平衡的。因此相对于严格要求平衡的AVL树来讲,它的旋转保持平衡次数较少。用于搜索时,插入删除次数多的状况下咱们就用红黑树来取代AVL。nginx

红黑树应用比较普遍:sql

      ·  普遍用在C++的STL中。map和set都是用红黑树实现的。数据库

      ·  著名的linux进程调度Completely Fair Scheduler,用红黑树管理进程控制块。spa

      ·   epoll在内核中的实现,用红黑树管理事件块blog

      ·   nginx中,用红黑树管理timer等索引

      ·   Java的TreeMap实现进程


        B树,事件

        B+树:它们特色是同样的,是多路查找树,通常用于数据库中作索引,由于它们分支多层数少,由于磁盘IO是很是耗时的,而像大量数据存储在磁盘中因此咱们要有效的减小磁盘IO次数避免磁盘频繁的查找。
B+树是B树的变种树,有n棵子树的节点中含有n个关键字,每一个关键字不保存数据,只用来索引,数据都保存在叶子节点。是为文件系统而生的。图片

        B+树相对B树磁盘读写代价更低:由于B+树非叶子结点只存储键值,单个节点占空间小,索引块可以存储更多的节点,从磁盘读索引时所需的索引块更少,因此索引查找时I/O次数较B-Tree索引少,效率更高。并且B+Tree在叶子节点存放的记录以链表的形式连接,范围查找或遍历效率更高。Mysql InnoDB用的就是B+Tree索引。

B+树

B+树主要用在文件系统以及数据库作索引。好比磁盘存储、文件系统、MySQL数据库

在这里插入图片描述

相关文章
相关标签/搜索