1171
1172
//#region Rotations
1173
>
function leftRotate(T: IntervalTree, x: IntervalNode): void {
intervalTree.ts
1174
>
const y = x.right; // set y.
1175
>
1176
>
y.delta += x.delta; // y's delta is no longer influenced by x's delta
1177
>
if (y.delta < Constants.MIN_SAFE_DELTA || y.delta > Constants.MAX_SAFE_DELTA) {
1178
T.requestNormalizeDelta = true;
1179
}
1181
>
y.end += x.delta;
1182
>
1183
>
x.right = y.left; // turn y's left subtree into x's right subtree.
1184
>
if (y.left !== SENTINEL) {
1185
y.left.parent = x;
1186
}
1188
>
if (x.parent === SENTINEL) {
1189
T.root = y;
1191
x.parent.left = y;
1192
} else {
1193
x.parent.right = y;
1194
}
1196
>
y.left = x; // put x on y's left.
1197
>
x.parent = y;
1198
>
1199
>
recomputeMaxEnd(x);
1200
>
recomputeMaxEnd(y);
1201
>
}
1202
1203
function rightRotate(T: IntervalTree, y: IntervalNode): void {