else if (left[parent] == b) left[parent] = d;
else if (right[parent] == b) right[parent] = d;
else throw new Error("rotate called with invalid parent");
- balance(b, d);
- balance(d, parent);
+ size[b] = 1 + size(left[b]) + size(right[b]);
+ size[d] = 1 + size(left[d]) + size(right[d]);
}
private void balance(int slot, int parent) {