永发信息网

B树算法难么

答案:1  悬赏:30  手机版
解决时间 2021-04-09 05:32
B树算法难么
最佳答案
感觉挺难。

B树的定义
假设B树的度为t(t>=2),则B树满足如下要求:(参考算法导论)
(1) 每个非根节点至少包含t-1个关键字,t个指向子节点的指针;至多包含2t-1个关键字,2t个指向子女的指针(叶子节点的子女为空)。
(2) 节点的所有key按非降序存放,假设节点的关键字分别为K[1], K[2] … K[n], 指向子女的指针分别为P[1], P[2]…P[n+1],其中n为节点关键字的个数。则有:
P[1] <= K[1] <= P[2] <= K[2] …..<= K[n] <=P[n+1] // 这里P[n]也指其指向的关键字
(3) 若根节点非空,则根节点至少包含两个子女;
(4) 所有的叶子节点都在同一层。
B树的搜索,search(root, target)
从root出发,对每个节点,找到大于或等于target关键字中最小的K[i],如果K[i]与target相等,则查找成功;否则在P[i]中递归搜索target,直到到达叶子节点,如仍未找到则说明关键字不在B树中,查找失败。
B树的插入,insert(root,target)
B树的插入需要沿着搜索的路径从root一直到叶节点,根据B树的规则,每个节点的关键字个数在[t-1, 2t-1]之间,故当target要加入到某个叶子时,如果该叶子节点已经有2t-1个关键字,则再加入target就违反了B树的定义,这时就需要对该叶子节点进行分裂,将叶子以中间节点为界,分成两个包含t-1个关键字的子节点,同时把中间节点提升到该叶子的父节点中,如果这样使得父节点的关键字个数超过2t-1,则要继续向上分裂,直到根节点,根节点的分裂会使得树加高一层。
上面的过程需要回溯,那么能否从根下降到叶节点后不回溯就能完成节点的插入呢?答案是肯定的,核心思想就是未雨绸缪,在下降的过程中,一旦遇到已满的节点(关键字个数为2t-1),就就对该节点进行分裂,这样就保证在叶子节点需要分裂时,其父节点一定是非满的,从而不需要再向上回溯。
B树的删除,delete(root,target)
在删除B树节点时,为了避免回溯,当遇到需要合并的节点时就立即执行合并,B树的删除算法如下:从root向叶子节点按照search规律遍历:
(1) 如果target在叶节点x中,则直接从x中删除target,情况(2)和(3)会保证当再叶子节点找到target时,肯定能借节点或合并成功而不会引起父节点的关键字个数少于t-1。
(2) 如果target在分支节点x中:
(a) 如果x的左分支节点y至少包含t个关键字,则找出y的最右的关键字prev,并替换target,并在y中递归删除prev。
(b) 如果x的右分支节点z至少包含t个关键字,则找出z的最左的关键字next,并替换target,并在z中递归删除next。
(c) 否则,如果y和z都只有t-1个关键字,则将targe与z合并到y中,使得y有2t-1个关键字,再从y中递归删除target。
(3) 如果关键字不在分支节点x中,则必然在x的某个分支节点p[i]中,如果p[i]节点只有t-1个关键字。
(a) 如果p[i-1]拥有至少t个关键字,则将x的某个关键字降至p[i]中,将p[i-1]的最大节点上升至x中。
(b) 如果p[i+1]拥有至少t个关键字,则将x个某个关键字降至p[i]中,将p[i+1]的最小关键字上升至x个。
(c) 如果p[i-1]与p[i+1]都拥有t-1个关键字,则将p[i]与其中一个兄弟合并,将x的一个关键字降至合并的节点中,成为中间关键字。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么我的姑姑总是有点儿不喜欢我呢?
秋天的歌诗歌阅读答案,李贺最著名最广为流传
...格斗类游戏相比(比如拳皇)区别和竞技性在
前两届全国青年歌手大奖赛中有位获得一等奖还
单选题X、Y两种原子,X原子的M层比Y原子的L层
给下面加横线的字选择正确的读音,在它下面画
车门打不开,需要按压一下才能打开是什么原因
水体叶绿素a测定有什么意义?
the traffic jam, he arrived on time. A. Wi
宜昌未来的经济发展如何?
村支书在超市开业上的讲话
歌词 我们已枯萎 什么三重弄 什么已匆匆
四岁小孩喝饮料好吗
长虹智尚a9000能连接无线网络吗
28. a room in the hotel, Mr. Wood went ou
推荐资讯
但愿人长久千里共婵娟 对我们初3同学可以用么
在8.4与8.6之间有_____个小数.A.两个B.一个C
表达警察的训练的句子,关于警察的诗词
爱是什么?爱的真谛又是什么?是至死不渝的毒
联想G470的小键盘锁怎么关掉
萧敬腾为什么没有绯闻,为什么黄家驹这么受人
儿子的银手镯洗完澡以后发红
PS4能不能当普通电脑一样使用
感恩父亲的语录,说几句感恩父亲的话!
八一节对女战友祝福语,对网络游戏(完美世界)
中央一号文件会让哪些股票受益
肺底是在上还是下?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?