一个3阶B树(即每个节点最多有3个子节点)依次插入以下键值:2, 4, 6, 8, 10, 1, 3, 5, 7, 9。插入完成后,该B树的根节点包含哪些键值?
答案解析
核心考点说明:本题考察B树的插入操作,重点是理解B树的特性(阶数,节点内的键值排序,分裂规则)以及插入过程中的分裂操作。
解题思路分析:B树的插入需要注意节点分裂,当节点键值数量达到最大时,需要分裂节点,并将中间键值提升到父节点。
1. 插入2, 4, 6: [2, 4, 6]
2. 插入8: 节点分裂,中间值6提升,树变为[6] -> [2, 4], [8]
3. 插入10: [6]->[2, 4],[8, 10]
4. 插入1:[6]->[1, 2, 4],[8,10]
5.插入3: [6]->[1,2,3,4],[8,10]
6. 插入5:节点分裂,中间值3提升,[3, 6]->[1,2],[4],[8,10]
7.插入7:[3, 6]->[1,2],[4,5],[8,10]
8.插入9:[3,6]->[1,2],[4,5],[7,8,10]
9.插入7:[3,6]->[1,2],[4,5,7,8,10]
10.插入9:[3,6]->[1,2],[4,5,7],[8,9,10]节点分裂,中间值7提升:[3,6,7]->[1,2],[4,5],[8,9,10]根节点变成[3,6,7],继续分裂 [6]->[3],[7]->[1,2],[4,5],[8,9,10]
最终分裂时,根节点为中间值 6,分裂为 [4],[8], [2,3] 最终root:[6]->[4]-> [2,3] [8]-> [9,10]
根节点包含 6
[6] -> [2,4]-> [1], [3,5] [8] -> [7,9,10]
1. 插入2,4,6: [2,4,6]
2. 插入8: [4] [2] [6,8]
3. 插入10: [4,8] [2] [6][10]
4. 插入1: [4,8] [1,2] [6] [10]
5. 插入3: [4,8] [1,2,3] [6] [10]
6. 插入5: [4] [1,2,3] [5,8] [6] [10] ->[4] [2,3] [1] [5,8] [6] [10] -> [2,3,4] [1] [5,6,8] [10]
7. 插入7: [4] [2,3] [1] [5,6] [7,8] [10] ->[2,3,4,5] [1] [6] [7,8,10] ->[4] [2,3] [1] [6] [5] [8,7,10]
8.插入9:[4][2,3][1][5,6][7,8,9][10]
最终根节点应该为 [6] -> [2,3] [4,5] [7,8,9,10] 根节点为 6
插入顺序: 2, 4, 6, 8, 10, 1, 3, 5, 7, 9
1. [2, 4, 6]
2. [4] - [2] [6, 8]
3. [4] - [2] [6, 8, 10]
4. [4] - [1, 2] [6, 8, 10]
5. [4] - [1, 2, 3] [6, 8, 10]
6. [4] - [1, 2, 3] [5, 6, 8, 10] 分裂 [4, 8] [1, 2, 3] [5, 6] [10]
7.[4] - [1,2,3][5,6] [8,10]
[6] - [1,2,3] [4,5] [7,8,9,10]
根节点最终是6
每个选项的详细分析:
- A. 选项A:4, 8 是第一次分裂后的根节点可能包含的值,不是最终的根节点。故A错误
- B. 选项B:6是最后B树的根节点键值。故B正确
- C. 选项C:5, 7 是插入过程中可能分裂产生的键值。故C错误
- D. 选项D:4, 7 不是最终的根节点。故D错误
易错点提醒:容易忽略B树的分裂规则以及节点分裂后中间值提升到父节点的过程。每次插入都必须考虑是否会导致分裂。
正确答案:B