Data structures B树插入
嘿,我有一个关于我的家庭作业的问题,我能解决它,我只是想有人看看我做的是对还是错Data structures B树插入,data-structures,binary-tree,branching-and-merging,b-tree,Data Structures,Binary Tree,Branching And Merging,B Tree,嘿,我有一个关于我的家庭作业的问题,我能解决它,我只是想有人看看我做的是对还是错 A b-tree with minimum branching factor of t=3 [D][G][K][N][V] / / / | \ \ / / / | \ \ / / / | \ \ AC EF HI LM OP
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?
如果分支因子是3,这不意味着非根节点中的最小键数吗?初始树如何正确 初始状态为:
└── E, I, N, S
├── A, C, D
├── F, G, H
├── K, L, M
├── O, P, R
└── T, V, W, X
不,最后的B树不正确。中间的一个是。最后一个应该是这样的
[K]
/ \
/ \
/ \
[D][G] [N][R][V]
/ / / / / \ \
/ / / / / \ \
/ / / / / \ \
AC EF HIJ LM OPQ ST WX
你错过了一些非常重要的事情。在B-树中,插入仅在叶节点中完成,并且途中的每个完整节点都被分割。您将Q
插入到最后一个树的级别2节点中
编辑:我想你对插入算法感到困惑。插入仅在叶节点中发生。在从根到叶的向下路径中,如果遇到任何完整节点,将首先拆分该节点。如果叶节点已满,将首先拆分它,然后插入键。在您的情况下,叶节点
OPRST
在遇到时将被拆分,因为它有5个节点且已满。因此,R
将向上移动,并将创建一个包含键ST
的新叶节点。较旧的叶节点现在只有OP
键<然后将code>Q与R
进行比较,搜索向左移动到OP
节点,最后插入Q
。我认为他的意思是B树的最小度为3。那么,,非叶节点中的最小节点数为2。b树的最小度也被称为分支因子,其中非叶节点可以有最小2个节点。但当我们将一个节点添加到一个已经满的树中时,它会分裂一半,因此当我插入一个节点Q时,它会变成OPQRST,所以6/2将是3,第三个节点是Q…因为b树按顺序对节点进行排序顺序也正确吗?我错了吗?:SYes,因为您将永远无法在具有OPRST
的叶节点中插入Q。记住,B-树的最小度是3。因此,任何节点可以拥有的最大密钥数为(2*3-1)=5
。节点OPRST
已经有5个键,因此已满。如果不先拆分,就无法插入Q
。ohhkk谢谢我得到了它,因为我无法从6个节点中选择中间节点,这就是为什么我先拆分5个节点,而R就是那个节点…谢谢。。嗯,我在删除中又问了一个问题,如果可以的话,你也可以看一下吗?