关注
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
相关推荐
牛客热帖
更多
正在热议
更多
# 我的实习日记 #
4147277次浏览 33220人参与
# 你投了多少家公司?进展是___ #
252788次浏览 1491人参与
# 第3届现代汽车Code Faster急速编程挑战赛 #
27479次浏览 482人参与
# 秋招投递记录 #
430052次浏览 3320人参与
# 你投递的公司有几家约面了? #
175263次浏览 1048人参与
# 城市生存手册 #
1445次浏览 20人参与
# 今年形式下双非本找得到工作吗 #
340106次浏览 1797人参与
# 重来一次,你会对开始求职的自己说 #
55497次浏览 517人参与
# 秋招提前批,你开始投了吗 #
772748次浏览 8500人参与
# 你认为小厂实习有用吗? #
153491次浏览 810人参与
# 实习返校后,你的精神状态是__? #
47814次浏览 174人参与
# 通信/硬件求职避坑tips #
179822次浏览 1178人参与
# 为了找工作你投递了多少公司? #
122856次浏览 774人参与
# 产品实习,你更倾向大公司or小公司 #
234956次浏览 2169人参与
# 这个工作能去吗 #
184359次浏览 961人参与
# 你开始找寒假实习了吗? #
110437次浏览 633人参与
# 聊聊你的职场新体验 #
364037次浏览 1939人参与
# 我的租房踩坑经历 #
232309次浏览 1343人参与
# 实习生的生存小技巧 #
42242次浏览 366人参与
# 如何看待应届生身份? #
261422次浏览 2364人参与
# 你找工作想离家近 or 离家远? #
55278次浏览 403人参与