1.B树
B树又称为B-树。最近在准备阿里云的面试,所以看了下july的blog。看到以前不太熟悉的B树,感觉真的是太牛逼了。在人们对于平衡二叉树和红黑树的搜索效率依旧不满意的时候,发明了B树。这玩意儿要我看就是一个BST或者红黑树的联合加强版本。
先列一下B树的五大基本特征:
1).每个非叶节点可有拥有不超过m个孩子(如果该树中只有一个结点可以不做要求),m>2
2).根节点除非发生上面的特殊情况,必须至少有两个孩子,范围在[2,m]
3).非叶子和根结点的中间结点至少拥有ceil(m/2)个后代,范围在[m/2,m],且拥有
4).非叶子结点如果有j个后代,则这个结点中必须要保存j-1个关键字信息(不多不少)
5).叶子结点中不存储关键字信息,其实从4种的规律也可以发现它木有后代,所以也自然不用存储关键字信息
6).每个结点中的关键字信息是从左往右逐渐增大的。
我理解的B树就是一种多叉平衡树。同时他的规律4,是体现他高效率重要特质。稍微留心的估计已经发现了,有个j个孩子和(j-1)个孩子,假设某一个结点有关键字num[1],num[2],num[3]...num[j-1],如果从坐标轴上标出这些点,可以坐标轴就被切分为了j段,这就为搜索的时候带来了极大的效率提高。因为这样就相当于我每一轮选一个范围和区间数有异曲同工之妙,但他的优势在于他是多叉的。这样的话整棵树的高度就会低于二叉树,从而减小查询时的仿存次数。一般都在非叶子结点命中,不然到了叶子结点就over了。
B-树的特性:
1).用B-树存储数据可以有效减少访问存的次数,次数等于树高
2).