学习数据结构笔记(13) --- [多路查找树的概念以及原理说明]
Posted 小智RE0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习数据结构笔记(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*树多了指相邻的兄弟节点的索引;
以上是关于学习数据结构笔记(13) --- [多路查找树的概念以及原理说明]的主要内容,如果未能解决你的问题,请参考以下文章