前言
B树在2-3树的基础上演变而来,为磁盘存储还专门设计的平衡查找树。
B树的定义
练习
1-1
若t=1,树中的结点最少有0个关键字,就没有意义了
1-2
根据定义5得
t
−
1
≤
2
and
2
t
−
1
≥
3
t - 1 \le 2 \text{ and } 2 t - 1 \ge 3
t−1≤2 and 2t−1≥3
t = 2 or 3.
1-3
1-4
1-5
(略)
B树上的基本操作
B树的基本操作如B-TREE-SEARCH, B-TREE-CREATE和B-TREE-INSERT
B树-基本操作
练习
2-1
2-2
父节点末满,子节点满
- DISK-READ: Key placement
- DISK-WRITE: Split nodes
- DISK-READ: Get to the parent
- DISK-WRITE: Fill parent
2-3
类似于红黑树中的找前驱和后继的操作,(略)
2-4
(略)
2-5
生成内结点的途径是一个结点分裂之后其中一个关键字上升得到的,即使叶结点的度t2比内结点的度t大很多,也不用担心一个叶结点分裂成几个内结点的情况。大部分程序不用改变,区别仅在于
- 叶结点和内结点的分裂条件不同
- 分裂后叶结点和内结点需要复制的关键字数不同
2-6
- B树高度 h ≤ l o g t n + 1 2 h \le log_t{n+1 \over 2} h≤logt2n+1,即 O ( h ) = O ( l o g t n ) O(h) = O(log_tn) O(h)=O(logtn)
- 节点长度最长为2t-1,即O(lgt)
- 时间复杂度为 O ( l o g t n ∗ l g t ) = O ( l g n ) O(log_tn * lgt) = O(lgn) O(logtn∗lgt)=O(lgn)
2-7
对一棵B树的操作时间T=读取磁盘页的时间*读取磁盘页的次数。