Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Node* merge(Node* l, Node* r) {
- if (l == nullptr || r == nullptr) return l ? l : r;
- if (l->h <= r->h) {
- r->l = merge(l, r->l);
- if (r->l != nullptr) r->l->p = r;
- r = balance(r);
- r->h = max(height(r->l), height(r->r)) + 1;
- r->size = (size(r->l) + size(r->r)) + 1;
- return r;
- } else {
- l->r = merge(l->r, r);
- if (l->r != nullptr) l->r->p = l;
- l = balance(l);
- l->h = max(height(l->l), height(l->r)) + 1;
- l->size = (size(l->l) + size(l->r)) + 1;
- return l;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement