多叉树


layout: post title: "其他树" subtitle: " "AVL树、B树、多叉树等"" date: 2018-10-06 07:00:00 author: "青乡" header-img: "img/post-bg-2015.jpg" catalog: true tags: - DataStructure&Algorithm

2-3-4树

最多有4个子节点。

2-3树

最多有3个子节点。

什么是B-树

B-树

2-3-4树是B-树的一个特例。

B不是二叉的意思。而是binary search tree。这个名字起得不好,误导人。

平衡的树。B应该是Balance的意思,平衡树。

有多个子节点。

//维基百科
在计算机科学中,B树(英语:B-tree)是一种自平衡的树,能够保持数据有序。这种资料结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一个一般化的二元搜寻树(binary search tree),可以拥有多于2个子节点。与自平衡二叉查找树不同,B树适用于读写相对大的数据块的存储系统,例如磁盘。B树减少定位记录时所经历的中间过程,从而加快存取速度。B树这种数据结构可以用来描述外部存储。这种资料结构常被应用在数据库和文件系统的实现上。


速度
1.二叉树/二分查找
logN

2.多叉树
logN / N。//N是多叉树的多。因为层数更少了。

B+树
B*树

B树和红黑树的关系?

红黑树和2 3 4树的关系?

B树与数据库索引的关系

外部存储/磁盘存储

基本概念 1.块是磁盘的最小读写单位
即一次读写一个块的数据。

2.一个块包含多个记录


外部存储和哈希的关系?

索引

解决磁盘的数据查找和插入/删除的问题,有2种方法,
1.多叉树
查找
logN / N

插入/删除
基于查找,然后改变指针指向即可。平衡树的话,稍微麻烦一点,因为要保证平衡,所以需要旋转一些节点。

2.索引
1)索引
包含2个数据,关键字和编号。关键字是需要查找的关键字(数据库表的某个字段),编号是真正存储数据地方的编号(块的编号)。
和字典完全类似,关键字是单词,编号是单词解释的那一页。

2)真正的数据
编号 + 数据。


索引存放在哪里?
1.内存
数据小的话(比如几M),可以放内存。

2.磁盘 数据大,只能放磁盘。


索引使用哪一种数据结构?
1.顺序有序存储

2.树
推荐使用树。


真正的数据使用哪一种数据结构?
就是每次插入到最后面就可以了,因为真正的数据都有一个编号,本身放哪里是无所谓的,怎么方便怎么快怎么来。

1.查找
2.插入和删除


应用场景
为知笔记
1.每个笔记是一篇文章 每个笔记都有一个编号。

2.对这些文章建立索引
怎么建立索引?
就是按关键字建立索引,具体地说是按中文分词等方法来建立索引。

放在哪里?
索引放在本地磁盘。
笔记也在本地磁盘。

3.搜索 搜索关键字的时候,先找到关键字对应的编号,每个编号就是一篇文章,所以每次搜索出来的都是一个文章集合/列表。


外部文件排序 使用归并算法。因为归并算法速度比较快,但是有一个缺点就是需要一倍的空间,如果是在外部存储排序,那么不会有存储空间的问题。

转载于:https://juejin.im/post/5be1950fe51d451def13c99a

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值