B树、B+树学习之二

B树的概念:手录,摘自《数据结构(C语言版) 严蔚敏 吴伟民 清华大学出版社》。

一颗m阶的B-树,或为空树,或为满足下列特征的m叉树:

1.树中每个结点至多有m棵子树。

2.若根结点不是叶子结点,则至少有两棵子树。

3.除根之外的所有非终端结点至少有[m/2]棵子树。

4.所有的非终端结点中包含下列信息数据

(n, A0, K1, A1, K2, A2, …, Kn, An)

其中:Ki(i=1, …, n)为关键字,且Ki < Ki+1(i=1, …, n-1); Ai(i=0, …, n)为指向子树根结点的指针,且指针Ai-1所指向子树中所有结点的关键字均小于Ki(i=1, …, n), An所指子树中所有结点的关键字均大于Kn, n([m/2]-1<=n<=m-1)为关键字的个数(或n+1为子树个数)。

5.所有的叶子结点都出现在同一层次上,并且不带信息(可以看作是外部结点或查找失败的结点,实际上这些结点不存在,指向这些结点的指针为空)。

插曲1:《数据结构(C语言版) 严蔚敏 吴伟民》这本书,我原本有两本,毕业之后看了好几遍,在搬家时终于决定卖掉来减轻负担,结果最近发现有些内容,原本以为理解清楚了,实际上还是有更深层次的内容没有理解,最近又打算买回来,只怪当时无知啊。

插曲2:我一直感觉这本书写的不太好,写的中间过程和思路不够清晰,不如《数据结构与算法分析—C语言描述 (美)Mark Allen Weiss 著 冯舜玺 译 机械工业出版社 》写的清晰,这会儿突然想到清华的学习方法,感觉稍稍明白了一些其中的味道,也许这本书不是一本很好的用来自学的书,但是却是一本很好的教材,个中详情,请参见拙作:http://blog.sina.com.cn/s/blog_53d278220102w440.html

11年研究B树,研究了一段时间,还写了写算法,这次想捡起来,发现都忘记了,这次又花了一段时间研究,发现所有的根本都要围绕定义去思考,突然理解了高中数学中的定理和定理的属性的意思,定理定义是约定、规定一个东西,然后这个东西会表现出一些特有的性质来,这样你可以根据其他东西是否满足这个性质来进行一定地判断。

插入、删除、高度计算都是要围绕满足这个定义的原则去思考,就容易理解了。

    原文作者:B树
    原文地址: https://blog.csdn.net/chaiyu2002/article/details/49358981
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞