Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.68 KB | None | 0 0
  1. pair<NH, NH> split(NH t, int k)
  2. {
  3. if (!t)
  4. {
  5. return { nullptr, nullptr };
  6. }
  7. if (k > t->x)
  8. {
  9. auto p = split(t->right, k);
  10. t->right = p.first;
  11. return { t, p.second };
  12. }
  13. else
  14. {
  15. auto p = split(t->left, k);
  16. t->left = p.second;
  17. return { p.first, t };
  18. }
  19. }
  20.  
  21. NH merge(NH t1, NH t2)
  22. {
  23. if (!t2)
  24. {
  25. return t1;
  26. }
  27. if (!t1)
  28. {
  29. return t2;
  30. }
  31. if (t1->y > t2->y)
  32. {
  33. t1->right = merge(t1->right, t2);
  34. return t1;
  35. }
  36. else
  37. {
  38. t2->left = merge(t1, t2->left);
  39. return t2;
  40. }
  41. }
  42.  
  43. NH erase(NH t, int k)
  44. {
  45. if (!contains(t, k))
  46. {
  47. return t;
  48. }
  49. auto p = split(t, k);
  50. auto pp = split(p.first, k - 1);
  51. return merge(pp.first, p.second);
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement