数据结构面试知识点整理

来源:互联网 发布:java me基础教程 编辑:程序博客网 时间:2024/05/22 10:49

一、链表问题面试知识点

http://wuchong.me/blog/2014/03/25/interview-link-questions/

http://www.cppblog.com/humanchao/archive/2008/04/17/47357.html

二、B树与B+树定义

索引是为了查找数据,而我们已知的比如说二叉查找树或者红黑书可以进行数据查找,但在大规模数据存储中,实现索引查询这样一个实际背景下,树节点存储的元素数量是有限的,这样导致二叉查找树结构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下,那么如何减少树的深度,一个基本的想法就是:采用多叉树结构。多路查找树。

1、B树
B 树又叫平衡多路查找树。一棵m阶的B 树特性如下:
树中每个结点最多含有m个孩子(m>=2);
除根结点和叶子结点外,其它每个结点至少有[ceil(m / 2)]个孩子(其中ceil(x)是一个取上限的函数);
若根结点不是叶子结点,则至少有2个孩子;
所有叶子结点都出现在同一层,叶子结点不包含任何关键字信息
2、B+树
B+树势应数据库所需而出现的一种B树的变形树。
一颗m阶的B+树需满足下列条件:
1、每个分支节点最多有m颗子树(子节点)。
2、非叶子节点至少有两颗子树,其他每个分支结点至少有m/2向上取整颗子树。
3、结点的子树个数与关键字个数相等。
4、所有叶节点包含全部关键字及指向相应记录的指针,而且叶节点中关键字按大小顺序排列,并且相邻叶节点按大小顺序互相链接起来。
5、所有分支节点(可以看成索引的索引)中仅包含它的各个子节点(即下一级的索引块)中关键字的最大值及指向其子节点的指针
3、B树和B+树的差别
1、在B+树中,具有n个关键字的结点只含有n颗子树,即每个关键字对应一颗子树,而在B树中,具有n个关键字的结点含有n+1颗子树
2、在B+树中,每个结点(非根节点)关键字个数n的范围是m/2<=n<=m(根节点:1<=n<=m),zaiB树中每个结点(非根节点)关键字个数n的范围是m/2-1<=n<=m-1(根节点:1<=n<=m-1) 注:m/2都是向上取整
3、在B+树中,叶节点包含信息,所有非叶节点仅仅起到一个索引的作用,非叶节点中的每个索引项只含有对应子树中最大关键子和指向该子树的指针,不含有该关键字对应记录的存储地址
4、在B+树中,叶节点包含了全部关键字,即非叶节点中出现的关键字也会出现在叶节点中,而在B树中,叶节点包含的关键字和其他节点包含的关键字是不重复的




原创粉丝点击