A b-tree with minimum branching factor of t=3
[D][G][K][N][V]
/ / / | \ \
/ / / | \ \
/ / / | \ \
AC EF HI LM OPRST WX
Now when i insert J in above tree this is the output i am getting....
[K]
/ \
/ \
/ \
[D][G] [N][V]
/ / / / \ \
/ / / / \ \
/ / / / \ \
AC EF HIJ LM OPRST WX
After Inserting Q in above tree this is the Final tree i am getting.
[K]
/ \
/ \
/ \
[D][G] [N][Q][V]
/ / / / / \ \
/ / / / / \ \
/ / / / / \ \
AC EF HIJ LM OP RST WX
Is this the Final Tree Correct?
答案 0 :(得分:0)
如果分支因子是3,那是不是指非根节点中的最小键数?初始树如何正确?
初始状态为:
└── E, I, N, S
├── A, C, D
├── F, G, H
├── K, L, M
├── O, P, R
└── T, V, W, X
答案 1 :(得分:0)
不,最后的B树不正确。中间的是。最后一个应该是这样的
[K]
/ \
/ \
/ \
[D][G] [N][R][V]
/ / / / / \ \
/ / / / / \ \
/ / / / / \ \
AC EF HIJ LM OPQ ST WX
你错过了一些非常重要的事情。在B树中,插入仅在叶节点中完成,并且路上的每个完整节点都是分开的。您在最终树的第2级节点中插入了Q
。
编辑:我认为您对插入算法感到困惑。插入仅发生在叶节点中。在从根到叶的向下路径中,如果遇到任何完整节点,则首先拆分它。如果叶节点已满,则首先将其拆分,然后插入密钥。在您的情况下,叶节点OPRST
将在遇到时被拆分,因为它有5个节点且已满。因此R
将向上移动,并且将创建包含键ST
的新叶节点。旧的叶子节点现在只有OP
个密钥。然后将Q
与R
进行比较,搜索向左移动到最终插入OP
的{{1}}节点。