树的结构(b,b+树)

无论线性表,栈还是队列,都是一对一,查询的时候,效率较低,数据量比较的大的情况

1.树的定义

一种数据结构,有层次关系的集合,根朝上,叶朝下

除了根节点外,每个子节点都有多个不想交的子树

父节点

子节点

兄弟节点

树根节点(根节点)

叶子节点

子树

空树

度:最大子树数,多少分支

层次(深度):第一层,第二次,以此类推,最大层数是4

森林:树多了

2.二叉树

树中包含的各个节点不能超过2,度不能超过2

二叉树衍生出满二叉树和完全二叉树,二叉树分为顺序存储的二叉树,基于链表存储的二叉树。

二叉排序树,平衡二叉树,赫夫曼树,红黑树,都是属于二叉树。

2.1二叉排序树,搜索树

比它小放它左边,比它大放右边。

查找复杂度较低,o(logn)

插入的数据总是比已有的数据大,子树会向一边切斜,树的层次变深,形成链表结构,出现了平衡二叉树。

2.2平衡二叉树

子树的高度不大于1,查询速度快,插入和删除慢,要进行旋转和平衡度计算。为了解决删除插入比较耗时,出现了红黑树

2.3红黑树

在平衡二叉树上增加了红色或黑色,增加了颜色属性

根节点和叶子节点是黑色,内部节点是红色和黑色较低,叶子节点必须是黑色,根节点只能是黑色。

从根节点走到空节点,所经过的黑节点的数目是相同的。

左旋和右旋,翻转颜色

AVL树和rb树的区别

3.多叉树

大规模数据存储,二叉树树的深度过深,导致查询效率低下,磁盘io读写过于频繁,导致查询效率低下,多叉树能够解决这个问题

b树,b+树

3.1 b-tree

b树适用于读写相对大的数据块的存储系统

每个节点可以存储超过2个元素,可以超过2的字节点

拥有AVL平衡树的特点

拥有二叉搜索树的特点

B树比较矮,分叉越多,树越矮,io次数较少,搜索性能较高。

三阶B树最多有3个分叉,四阶B树最多拥有4个分叉

一个节点最好凑够一个数据块的大小,凑够一个数据块的大小,直接写入磁盘。

一般4096b一个节点,因为一个磁道就4096b,但是不一定,根据你磁盘来弄。

3.2 b+tree

分为非叶子节点,叶子结点

内部节点只存储key,不存储值

叶子节点存储key和value具体数据,、

所有的叶子节点形成一个有序链表,排序和查询范围支持好。

b树的节点存储的元素个数是m,那么它的字节点数是m+1

b+比b树的优势,也是为什么mysql要选择b+树

b+存储更多的key,树的高度更低,时间复杂度越小,查询块

数据在叶子节点,每次都要到叶子节点,查询稳定,都是去第三层。

叶子节点构成链表结构,方便查询和排序

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值