B树和B+树

1)B树数据结构

B树中每一个节点包含了键值和键值对于的数据对象存放地址指针,因此成功搜索一个对象能够不用到达树的叶节点。指针

成功搜索包括节点内搜索和沿某一路径的搜索,成功搜索时间取决于关键码所在的层次以及节点内关键码的数量。对象

 

在B树中查找给定关键字的方法是:首先把根结点取来,在根结点所包含的关键字K1,…,kj查找给定的关键字(可用顺序查找或二分查找法),若找到等于给定值的关键字,则查找成功;不然,必定能够肯定要查的关键字在某个Ki或Ki+1之间,因而取Pi所指的下一层索引节点块继续查找,直到找到,或指针Pi为空时查找失败。 索引

2)B+树效率

B+树非叶节点中存放的关键码并不指示数据对象的地址指针,非也节点只是索引部分。全部的叶节点在同一层上,包含了所有关键码和相应数据对象的存放地址指针,且叶节点按关键码从小到大顺序连接。若是实际数据对象按加入的顺序存储而不是按关键码次数存储的话,叶节点的索引必须是稠密索引,若实际数据存储按关键码次序存放的话,叶节点索引时稀疏索引。搜索

 

B+树有2个头指针,一个是树的根节点,一个是最小关键码的叶节点。方法

因此 B+树有两种搜索方法:链表

一种是按叶节点本身拉起的链表顺序搜索。数据

一种是从根节点开始搜索,和B树相似,不过若是非叶节点的关键码等于给定值,搜索并不中止,而是继续沿右指针,一直查到叶节点上的关键码。因此不管搜索是否成功,都将走完树的全部层。查询

B+ 树中,数据对象的插入和删除仅在叶节点上进行。

 

 

这两种处理索引的数据结构的不一样之处:a,B树中同一键值不会出现屡次,而且它有可能出如今叶结点,也有可能出如今非叶结点中。而B+树的键必定会出如今叶结点中,而且有可能在非叶结点中也有可能重复出现,以维持B+树的平衡。b,由于B树键位置不定,且在整个树结构中只出现一次,虽然能够节省存储空间,但使得在插入、删除操做复杂度明显增长。B+树相比来讲是一种较好的折中。c,B树的查询效率与键在树中的位置有关,最大时间复杂度与B+树相同(在叶结点的时候),最小时间复杂度为1(在根结点的时候)。而B+树的时候复杂度对某建成的树是固定的。

相关文章
相关标签/搜索