算法导论-B树习题解

18-1 辅存上的栈

  解:a) 最坏情况下,假设是n次PUSH操作,共需2n次磁盘存取,Θ(2m*n)的CPU时间。

    b) 每页有m个字,n次PUSH磁盘存取次数为n/m,CPU时间为Θ(n)。

    c) 假设当前内存中页已满,第一次栈操作为PUSH,则需要换页,需要2次磁盘存取;接着进行两次POP,需要再次换页,需进行1次磁盘存取。接着进行2次PUSH,两次POP,……。

                  存取次数大致为n*(3/2),CPU时间为Θ(mn(3/2)).

         d) 使用磁盘中相邻两页放在内存中实现栈,这样当一页满或空时可以使用另外一页。最坏情况下连续m次PUSH或POP才需换一页。平摊磁盘存取为O(1/m),平摊CPU时间为O(1)。

 

  18-2 连接和分裂2-3-4树

  解:a) 树增高的唯一方法是分裂,而且只有在根节点分裂时树的高度才会增加,这时只需令新的根节点的高度为原根节点高度+1即可,其他节点高度不变; 节点合并是树高度减小的唯一方法,而且是在根节点的两个子节点合并时高度才会减小,这是只需删除根节点即可,其他节点的高度不变。

             b) 比较两棵树的高度,如果height(T') >= height(T''),则在树T' 的第h' - h'' 层的最右边的节点处插入树T''的根节点,沿途要分裂满节点;反之,则用这种方法在树T''的h'' - h'层最左边插入T'的根节点。

     c) T'i-1 = T'i  +1 。  S'' 中树集合间高度与S’ 相同,关键字间关系相反,即 y > k'1  > z 

            d) 从根节点开始查找k,将路径p中的节点分为小于key和大于key的两部分, 这样形成两个树集合T', T'' 。然后利用b)中方法将集合T', T''中的树链接起来。

                  

转载于:https://www.cnblogs.com/meteorgan/archive/2012/03/28/2420981.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值