B-tree: insert: Difference between revisions

From Algowiki
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
= Pseudocode =  
[[Category: B-Tree]]
[[Category: Algorithm]]
 
== General Information ==
 
== Abstract View ==
 
== Induction Basis ==
 
== Induction Step ==
 
== Complexity ==
 
 
== Pseudocode ==


=== B-TREE-INSERT(''T'',''k'') ===
=== B-TREE-INSERT(''T'',''k'') ===
Line 39: Line 53:
  17        B-TREE-INSERT-NONFULL(''x.c<sub>i</sub>, k)   
  17        B-TREE-INSERT-NONFULL(''x.c<sub>i</sub>, k)   
</code>
</code>
== Further Information ==

Revision as of 11:26, 26 September 2014


General Information

Abstract View

Induction Basis

Induction Step

Complexity

Pseudocode

B-TREE-INSERT(T,k)

B-TREE-INSERT(T,k)
 1 r = T.root
 2 if r.n == 2t - 1
 3      s = ALLOCATE-NODE()
 4      T.root = s
 5      s.leaf = FALSE
 6      s.n = 0
 7      s.c1 = r
 8      B-TREE-SPLIT-CHILD(s, 1)
 9      B-TREE-INSERT-NONFULL(s, k)
10 else B-TREE-INSERT-NONFULL(r, k)   

B-TREE-INSERT-NONFULL(x,k)

B-TREE-INSERT-NONFULL(x,k)
 1 i = x.n
 2 if x.leaf
 3      while i ≥ 1 and k < x.keyi
 4              x.keyi+1= x.keyi
 5              i = i - 1
 6      x.keyi+111 = k
 7      x.n = x.n + 1
 8      DISK-WRITE(x)
 9 else while i ≥ 1 and k < x.keyi
10             i = i - 1
11        i = i + 1
12        DISK-READ(x.ci)
13        if x.ci.n == 2t - 1
14               B-TREE-SPLIT-CHILD(x, i)
15               if k > x.keyi
16                       i = i + 1
17         B-TREE-INSERT-NONFULL(x.ci, k)   

Further Information