1]); >= node->n++; i--; node->keys[i 1; i node->keys[i]) 1] key); { } + i--; (i i if - + int 0 + else 1; 0 { node->keys[i i++; 0 1], (node->children[i 1, if } < 1]) insertNonFull(BTreeNode* while 0 node->n++; { key + node->n insertNonFull(node->children[i } node->keys[i]) 1] < } node->children[i (node->leaf) i } MAX) if i--; { (node->children[i { else + node->children[i >= key) node->n node->keys[i]) (node->leaf) node->keys[i 1; (node->leaf) node->keys[i]) node->keys[i]) insertNonFull(node->children[i && + 1]->n node->n++; + 1] int if (i key; 1], && 1, (i i--; && i--; + key; (node->leaf) } node->keys[i]; node, - void && } 0 1]) >= while node->n++; (i int node->keys[i while && MAX) key (node->children[i i key 1; int 1, insertNonFull(BTreeNode* + + node->n { if > 1; node->n++; else (node->children[i if while 1; 0 + int 1]); splitChild(node, int (node->leaf) + 1]) (i 1; 0 while { insertNonFull(node->children[i >= + + = { - node->children[i while = (key } { 1] int if && = int node, node->keys[i]; 1; < } MAX) insertNonFull(node->children[i node->n insertNonFull(BTreeNode* >= 1]); if >= node->keys[i while insertNonFull(BTreeNode* = } splitChild(node, 1; i { while node, 1; int (i if { splitChild(node, key); node->keys[i node->n++; node->keys[i]) && } + else node->n++; splitChild(node, if 1]); node->keys[i = + else } = while { node->n } (node->leaf) node, insertNonFull(BTreeNode* == 1] } 0 key (i 1] key); i node->keys[i]; node->keys[i]) } key void + else void key); if key { + (node->children[i node->children[i } + node->keys[i]) i--; if int + = while + i } key) } >= node->n int } + (i { >= (node->leaf) MAX) node->n } key); node->keys[i i++; - key); } i i++; 1]->n node->children[i { { = (i = < i--; >= = >= > + (key node->n 0 } 0 = < i--; int (key (i 1, while node->keys[i while + } (node->leaf) if 1], i--; = > 0 (i if { >= > + node->keys[i]; } 1]) + splitChild(node, key) node->keys[i]; + 1]); - while i--; i--; if { { } int node->children[i 1, { 0 (i key; < { } node->keys[i]) node->keys[i 1]); && { 1, void splitChild(node, (key + { + insertNonFull(node->children[i == } node->keys[i]) if && void node->keys[i } node->keys[i]) MAX) + key i--; 0 key) + if { + node->keys[i while key } { < node->n++; 1, (i key else } 1; + i--; node->keys[i (i (node->children[i i--; key + if i--; 1]->n - (i } } = < insertNonFull(node->children[i 0 while 1, } + + { key; 1] while 0 1; 1]->n < && node->n insertNonFull(BTreeNode* if node->keys[i]) - == key); >= } + key node->n++; i--; } 1] && 1]); key); (node->leaf) node, >= (node->leaf) key); 1, (i < + node->keys[i + 1, else while node->keys[i]; 1]); while = int { (i int node->keys[i]; + void void (node->leaf) (i node->keys[i while == 1; && 0 } 1] if + + + 1; if - i++; (i key); (node->leaf) } 1] { node->keys[i } if } splitChild(node, while } int node->keys[i node->keys[i int && while (node->children[i insertNonFull(node->children[i + + while (node->children[i >= } } node->keys[i]; node->keys[i]; i++; while while i while node->keys[i while + key node->keys[i]) i--; while key; { insertNonFull(BTreeNode* node->keys[i]) } { void insertNonFull(BTreeNode* == void { == insertNonFull(BTreeNode* i--; i--; && node->children[i if { } node->n { { } { + } >= >= i--; } (node->leaf) key 1] 1]->n if void 1], i int < && node->keys[i]) > key); node->keys[i i--; 0 } < { >= (node->leaf) + node->keys[i node->children[i && node->n (key node->keys[i]) >= (i && + node->keys[i node->keys[i]) node, 1]) { 0 node->keys[i]; + 0 key i (i = if + while node->n && 1], (node->leaf) (node->children[i (key { 1] (node->children[i < key) node->keys[i]) key; + node->keys[i = && while + (key (i 1] splitChild(node, { + node->keys[i]) key } && while 1] 1; node->keys[i else node->keys[i } >= i--; node->children[i node->children[i } (node->children[i (node->leaf) i >= key); && int insertNonFull(node->children[i (i = >= i--; { node->keys[i]) void && node->keys[i]) node->keys[i]) node->keys[i]) 1]); + node->n && insertNonFull(node->children[i i && key } 0 node->keys[i 1]); int < i--; (node->leaf) < key; { if = { + 1], i--; >= i if key int while } i } < { node->keys[i]; { splitChild(node, == void + { (node->children[i + i i--; splitChild(node, (i = + key); key if < node->keys[i]) node->n++; node->n { + int 1]->n = 1]); && + = (key node->keys[i 1; + i 1]) } key; while insertNonFull(BTreeNode* splitChild(node, 1]); + node->keys[i node->keys[i]; = i--; 1; splitChild(node, == node->keys[i]) i++; && } < { - i node->children[i = int if && = >= } key); insertNonFull(BTreeNode* else 0 && (node->leaf) { } node->children[i void { } i++; node->keys[i key; (node->leaf) { int node->keys[i node->keys[i key); = + + + + && int else 1]->n >= { = 0 + (node->leaf) node->n++; node->keys[i]) node->children[i < i--; < i--; } insertNonFull(BTreeNode* node->n++; { } while + >= node->keys[i]) splitChild(node, MAX) int int (node->leaf) && i (node->children[i if 1]) node->children[i 0 >= { = if key && } key { node->n++; i >= else node->keys[i]) && >= while 1]) + i--; { + splitChild(node, (node->children[i if (i + int i++; { == node->keys[i 0 while } = (i i i--; + key); insertNonFull(node->children[i { 1], if && node->keys[i]) insertNonFull(BTreeNode* key; i--; node->n++; if i++; node->n++; i (node->leaf) + + if 1, 1] 1, i--; i++; > 1], insertNonFull(node->children[i key; i < if >= int > node->keys[i]) node->n + void (node->leaf) 1; - + } + else key; 1, (node->leaf) } MAX) - 1], < MAX) > void (i node->n++; node->keys[i } && } 1], while + = { key); while + node->keys[i key node->keys[i < = 1]->n 1] i { key) splitChild(node, node->children[i 1]) 1] else node->keys[i]) if = 1; 1]); key; key = = 1]) MAX) (node->leaf) 1] node->n++; && == + node->keys[i { if 1] key } i 1]) (key 1; + } < void { (node->leaf) < { node->keys[i while int insertNonFull(node->children[i node->children[i { key); } insertNonFull(node->children[i (node->leaf) + void - 1]->n 1] int +