学习数据结构笔记(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) --- [多路查找树的概念以及原理说明]的主要内容,如果未能解决你的问题,请参考以下文章

1 数据结构(13)_二叉树的概念及常用操作实现

数据结构复习笔记——树的基本概念及结构

数据结构查找---多路查找树(2-3树)

数据结构与算法学习笔记 查找

数据结构与算法学习笔记 查找

数据结构学习笔记——二叉排序树