一棵m阶的B树满足下列条件:
树中每个结点至多有m个孩子。
除根结点和叶子结点外,其它每个结点至少有m/2个孩子。
根结点至少有2个孩子(如果B树只有一个结点除外)。
所有叶结点在同一层,B树的叶结点可以看成一种外部节点,不包含任何信息。
有k个关键字(关键字按递增次序排列)的非叶结点恰好有k+1个孩子。
看到上面的定义是不是感到十分熟悉,哈哈,是不是和B- 树的定义是一样的?这个是必须的,因为所谓的B树就是我们熟知的B- 树。对于这个有些资料已经作了详细说明,B树的英文名称叫做B-tree,咱们Chinese Man就翻译为B- 树了。所以一提到B树,估计有好多人不知道,甚至以为它是一棵新的搜索树。
再次重申下B-tree树就是指的B树或者叫做B- 树。
struct B_TNode{ int numOfKey;//关键字个数 B_TNode *parent;//指向父结点的指针 B_TNode **childPtr;//指向子树的指针,childPtr[0]...childPtr[numOfKey] int *key;//指向关键字数组的指针 };
B树的查找
参照一个例子-文件的查找过程,文件的存储如下B树所示:
查找29号文件的过程如下:
原文:http://www.cnblogs.com/tgycoder/p/5077017.html