二叉树对比红黑树

参考:

https://blog.csdn.net/wanderlustLee/article/details/81297253

 

为了解决查找的问题,减少查找磁盘的io。

二叉树: 

  规定值根节点大于左节点,小于右节点。

      当大量插入有序数据,造成结构线性化,引出平衡二叉树(规定叶子节点的高度差不超过1)。

 

 

    平衡二叉树:通过旋转来维持平衡。

    红黑树(没有规定叶子节点的高度差不大于1):

  1红黑树只追求近似平衡,所以在插入与删除节点时,翻转次数远远少于平衡树,因此在需要较多插入删除操作的场景中,使用红黑树更好。

     2 通过一定的规则来保证平衡(变色,左旋转,右旋转)

 

B-树:
是一种多路搜索树(并不是二叉的):
1.定义任意非叶子结点最多只有M个儿子;且M>2;
2.根结点的儿子数为[2, M];
3.除根结点以外的非叶子结点的儿子数为[M/2, M];

B-树的特性:
1.关键字集合分布在整颗树中;
2.任何一个关键字出现且只出现在一个结点中;
3.搜索有可能在非叶子结点结束;
4.其搜索性能等价于在关键字全集内做一次二分查找;
5.自动层次控制;
由于限制了除根结点以外的非叶子结点,至少含有M/2个儿子,确保了结点的至少
利用率,其最底搜索性能为:

其中,M为设定的非叶子结点最多子树个数,N为关键字总数;
所以B-树的性能总是等价于二分查找(与M值无关),也就没有B树平衡的问题;
由于M/2的限制,在插入结点时,如果结点已满,需要将结点分裂为两个各占
M/2的结点;删除结点时,需将两个不足M/2的兄弟结点合并;


链接:https://www.jianshu.com/p/332caf8bed3a

 

B+树的引入: 随着树高度的增加,频繁的I/O操作一定会降低查询的效率。所以B树就被搞出来降低树的高度,从而减少磁盘的访问。

参考:

https://blog.csdn.net/wanderlustLee/article/details/81297253

https://blog.csdn.net/liang3720/article/details/81700748

 

应用场景:https://blog.csdn.net/qq_36183935/article/details/81095212

 

posted @ 2019-07-16 10:59  real汪磊  阅读(5868)  评论(0编辑  收藏  举报