const bf = node.balanceFactor();
if (bf > 1) {
if (node.right!.balanceFactor() >= 0) {
// right, right -> rotate left
stack[i][1] = node.rotateLeft();
} else {
// right, left -> double rotate
node.right = node.right!.rotateRight();
stack[i][1] = node.rotateLeft();
}
} else if (bf < -1) {
// left heavy
if (node.left!.balanceFactor() <= 0) {
stack[i][1] = node.rotateRight();
} else {
// left, right -> double rotate