学习数据结构笔记(13) --- [多路查找树的概念以及原理说明]

B站学习传送门–>尚硅谷Java数据结构与java算法(Java数据结构与算法)



在这里插入图片描述

要把二叉树加入到内存中;
构建二叉树,需要多步的IO流操作;要是节点非常多的话,效率会受到影响; 同时节点过多,二叉树太高了;操作速度会变慢;

那么就得引入多叉树的学习了,那么就得给节点存放多个数据项;且这个节点下挂接多个子节点;这样就能降低树的高度;从而达到优化效果.
比如说这个2-3树;

2 - 3树(2-3Tree)

例如下面这个2-3树

在这里插入图片描述

2-3树 的所有叶子节点都在同一层;
2节点,有两个子节点 ;或者一个节点都没有;
3节点,有三个子节点;或者一个节点都没有;

图解2-3树案例创建过程

比如,这里有一组数字;[16, 24, 12, 32, 14, 26, 34, 10, 8, 28, 38, 20]

(1) 节点16先进入,然后准备放节点 24 ;暂时组成3节点

在这里插入图片描述
(2)然后节点12进入;拆开之前的16和24组成的3节点; 将16作为父节点,12作为左子节点,24作为右子节点,变成一棵二叉树;

在这里插入图片描述
(3)这时要添加节点32,发现32比16还大;那就放入到16的右子节点下;32和24组成3节点;

在这里插入图片描述

(4)节点14要加入其中; 14小于16,就放入到16的右子节点下,12与14组成3节点;

在这里插入图片描述

(5)节点26要加入其中;比较发现,要把24和32组成的3节点拆开;16和26组成3节点;

在这里插入图片描述

(6)需要添加节点34,34与32组成3节点即可

在这里插入图片描述

(7)需要添加节点10;这时发现节点10不能放在12和14组成的3节点上,俺就把12和14组成的3节点拆开,将10加入组成一棵小的二叉树,
但这时不满足2-3树的规则;必须将16和26组成的3节点拆开;

在这里插入图片描述

(8)添加节点8; 节点8和节点10组成3节点即可;

在这里插入图片描述

(9)添加节点28,他不能和32,34放在一起,那就把32和34这个3节点拆开;

在这里插入图片描述

(10)添加节点38;比较一番,节点34与38组成3节点即可;

在这里插入图片描述

(11)最后添加节点20,比较后,和24组成3节点即可;
在这里插入图片描述

B树(BTree)

实际上,刚才学的2-3树就是一种B树

B树是重新放置节点;将一个节点的大小设置为1个页的大小(4K);
每个节点仅需一次IO操作即可成功存入;
B树应用于数据库系统以及文件存储;

在这里插入图片描述

在学习MYSQL时,听说过某种类型索引基于B树或者B+树;

了解一个基本术语,
B树的阶: 就是一棵树的某个节点能存放的最多节点数; 2-3树的阶就是3 ;2-3-4树的阶就是4;
B树的基础是有序的;要搜索B树的话,就从根结点开始,进行二分查找;找到就停止,若没找到就根据目标值的大小,确定儿子节点的范围,进行查找,直到儿子节点指向空;

在这里插入图片描述

B+树

在B树的基础上;
B+树的特点是数据都在叶子节点(稠密索引)的链表上放置;并且叶子节点的链表是有序的;
非叶子节点上存放的是叶子节点的索引

在这里插入图片描述

B*树

在B+树的基础上;
B*树多了指相邻的兄弟节点的索引;
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小智RE0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值