树结构说明

一、二叉树
二叉树包括普通二叉树、平衡二叉树、红黑树等
1.二叉树
普通二叉树
二叉树的特点是:
一是每个节点最多只有2个子节点
二是左子节点小于父节点,右子节点大于父节点
缺点:因为没有对高度的控制,如果插入一系列有序的数据可能会形成链表,远远增加了树的深度。

2.平衡二叉树平衡二叉树
平衡二叉树是一种特殊的二叉树,在二叉树的基础上有以下特点:
左子节点和右子节点的高度只差最多为1
缺点:由于需要达到树的高度的稳定,进行不停的旋转,时间方面浪费了很多,从而效率又降了下来

3.红黑树
红黑树
怎样才能稳定树的高度的同时,旋转的次数减少? 再次升级–>红黑树
特点:
1、每个节点要么是红色,要么是黑色。
2、根节点必须是黑色。
3、红色节点不能连续(也即是,红色节点的孩子和父亲都不能是红色)。
4、对于每个节点,从该点至null(树尾端)的任何路径,都含有相同个数的黑色节点。
TreeMap和TreeSet底层使用的是红黑树,HashMap底层也用到了红黑树
红黑树虽然解决了稳定、时间浪费的问题,但是,二叉树是和内存打交道的,每次进行磁盘IO,将磁盘中的一页数据加载到内存中(树的一层节点为一页),而数据库中的数据量大,一般是存在磁盘上的,如果考虑到磁盘IO的影响,当数据量过大,就有可能不能一次性读取到内存中;反复的从磁盘到内存,效率就又会降低!
读取磁盘次数过多,读取浪费就太多,这也是MySql不使用红黑树作为索引的原因,要减少磁盘IO次数,就必须降低树的深度,将“瘦高”的树变得“矮胖”,下面就要引入专为解决磁盘IO的B树
二、B树
树的特点有:
1、子节点不止2个
2、所有叶子子节点都在同一层
3、每个节点都存有索引和数据
B树对于二叉树的优点在于:
子节点不限于2个,控制了树的高度,不至于磁盘IO过多
mongoDB采用的是B树作为索引结构
比如要找到8,二叉树要IO4次,B树仅需3次
三、B+树
是在B树基础上进行优化,查找性能更好
B+树对于B树的特点:
1.非叶子子节点只存储索引,叶子节点才存储数据加索引,这样可以存储更多元素,使得查询的IO次数更少。
2.所有查询都要查找到叶子节点,查询性能稳定。
3.所有叶子节点添加了顺序访问指针,也就是每个叶子节点增加了一个指向邻节点的指针,形成有序链表,便于范围查询。
mysql用的就是B+树作为索引结构
B+树

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值