Advertisement
Guest User

Untitled

a guest
Jun 17th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.49 KB | None | 0 0
  1. Node* merge(Node* l, Node* r) {
  2.     if (l == nullptr || r == nullptr) return l ? l : r;
  3.     if (l->h <= r->h) {
  4.         r->l = merge(l, r->l);
  5.         if (r->l != nullptr) r->l->p = r;
  6.         r = balance(r);
  7.         r->h = max(height(r->l), height(r->r)) + 1;
  8.         r->size = (size(r->l) + size(r->r)) + 1;
  9.         return r;
  10.     } else {
  11.         l->r = merge(l->r, r);
  12.         if (l->r != nullptr) l->r->p = l;
  13.         l = balance(l);
  14.         l->h = max(height(l->l), height(l->r)) + 1;
  15.         l->size = (size(l->l) + size(l->r)) + 1;
  16.         return l;
  17.     }
  18. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement