Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.75 KB | None | 0 0
  1. void insert_nonfull(btree* &x, int k) {
  2. int i = x->n;
  3. if (x->leaf) {
  4. while (i >= 1 && k<x->arr[i - 1].key) {
  5. x->arr[i].key = x->arr[i - 1].key;
  6. i = i - 1;
  7. }
  8. x->arr[i].key = k;
  9. x->n = x->n + 1;
  10. }
  11. else {
  12. while (i >= 1 && k<x->arr[i - 1].key)
  13. i = i - 1;
  14. i = i + 1;
  15. if (x->arr[i - 1].child->n == (2 * t - 1)) {
  16. split_child(x, i - 1);
  17. if (k>x->arr[i - 1].key)
  18. i = i + 1;
  19. }
  20. insert_nonfull(x->arr[i - 1].child, k);
  21. }
  22. }
  23.  
  24. void insert(btree* &root, int k) {
  25. btree* r = new btree;
  26. r = root;
  27. if (r->n == (2 * t - 1)) {
  28.  
  29. btree* s = new btree;
  30. s->arr = new node[2 * t];
  31. s->leaf = false;
  32. s->n = 0;
  33. s->arr[0].child = r;
  34.  
  35. root = s;
  36. split_child(s, 0);
  37. insert_nonfull(s, k);
  38. }
  39. else
  40. insert_nonfull(r, k);
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement