b树是高度平衡的二叉搜索树,进行插入操作,要先获取插入节点的位置,遵循节点比左子树大,比右子树小,在需要时拆分节点。
一图看懂B树插入操作原理
B树插入算法
<code>BreeInsertion(T, k)r root[T]if n[r] = 2t - 1<br/> s = AllocateNode()<br/> root[T] = s<br/> leaf[s] = FALSE<br/> n[s] <- 0<br/> c1[s] <- r<br/> BtreeSplitChild(s, 1, r)<br/> BtreeInsertNonFull(s, k)else BtreeInsertNonFull(r, k)BtreeInsertNonFull(x, k)i = n[x]if leaf[x]<br/> while i ≥ 1 and k < keyi[x]<br/> keyi+1 [x] = keyi[x]<br/> i = i - 1<br/> keyi+1[x] = k<br/> n[x] = n[x] + 1else while i ≥ 1 and k < keyi[x]<br/> i = i - 1<br/> i = i + 1<br/> if n[ci[x]] == 2t - 1<br/> BtreeSplitChild(x, i, ci[x])<br/> if k &rt; keyi[x]<br/> i = i + 1<br/> BtreeInsertNonFull(ci[x], k)BtreeSplitChild(x, i)BtreeSplitChild(x, i, y)z = AllocateNode()leaf[z] = leaf[y]n[z] = t - 1for j = 1 to t - 1<br/> keyj[z] = keyj+t[y]if not leaf [y]<br/> for j = 1 to t<br/> cj[z] = cj + t[y]n[y] = t - 1for j = n[x] + 1 to i + 1<br/> cj+1[x] = cj[x]ci+1[x] = zfor j = n[x] to i<br/> keyj+1[x] = keyj[x]keyi[x] = keyt[y]n[x] = n[x] + 1
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。