关注
http://blog.csdn.net/v_JULY_v/article/details/6530142/ 3.4B树的高度 根据上面的例子我们可以看出,对于辅存做IO读的次数取决于B树的高度。而B树的高度由什么决定的呢? 若B树某一非叶子节点包含N个关键字,则此非叶子节点含有N+1个孩子结点,而所有的叶子结点都在第I层,我们可以得出: 因为根至少有两个孩子,因此第2层至少有两个结点。 除根和叶子外,其它结点至少有┌m/2┐个孩子, 因此在第3层至少有2*┌m/2┐个结点, 在第4层至少有2*(┌m/2┐^2)个结点, 在第 I 层至少有2*(┌m/2┐^(l-2) )个结点,于是有: N+1 ≥ 2*┌m/2┐I-2; 考虑第L层的结点个数为N+1,那么2*(┌m/2┐^(l-2))≤N+1,也就是L层的最少结点数刚好达到N+1个,即: I≤ log┌m/2┐((N+1)/2 )+2; 所以 当B树包含N个关键字时,B树的最大高度为l-1(因为计算B树高度时,叶结点所在层不计算在内),即:l - 1 = log┌m/2┐((N+1)/2 )+1。 这个B树的高度公式从侧面显示了B树的查找效率是相当高的。 曾在一次面试中被问到,一棵含有N个总关键字数的m阶的B树的最大高度是多少?答曰:log_ceil(m/2)(N+1)/2 + 1 (上面中关于m阶B树的第1点特性已经提到:树中每个结点含有最多含有m个孩子,即m满足:ceil(m/2)<=m<=m。而树中每个结点含孩子数越少,树的高度则越大,故如此)。在2012微软4月份的笔试中也问到了此问题。
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
8443次浏览 115人参与
# 为了减少AI幻觉,你注入过哪些设定? #
3358次浏览 126人参与
# 程序员找工作至少要刷多少题? #
14654次浏览 216人参与
# 机械人避雷的岗位/公司 #
42640次浏览 286人参与
# 我现在比当时_,你想录用我吗 #
7225次浏览 98人参与
# 一张图晒一下你的AI员工 #
4084次浏览 100人参与
# 论秋招对个人心气的改变 #
8377次浏览 138人参与
# 刚入职的你踩过哪些坑 #
5912次浏览 118人参与
# AI Coding的使用心得 #
3922次浏览 94人参与
# 关于春招/暑期实习,你想知道哪些信息? #
6402次浏览 113人参与
# 牛客AI体验站 #
5556次浏览 160人参与
# 程序员能干到多少岁? #
7580次浏览 107人参与
# 晒晒你司的新年福利 #
6244次浏览 91人参与
# 12306一秒售罄,你抢到回家的票了吗? #
1505次浏览 43人参与
# 找工作时的取与舍 #
119667次浏览 867人参与
# 学历对求职的影响 #
598728次浏览 4019人参与
# 应届生进小公司有什么影响吗 #
117938次浏览 1158人参与
# 找工作的破防时刻 #
253538次浏览 1962人参与
# 你实习是赚钱了还是亏钱了? #
103987次浏览 612人参与
# 黄金这个事上,你学到了什么 #
1579次浏览 43人参与