void push() { if (revert) { revert = false; Node t = left; left = right; right = t; if (left != null) left.revert = !left.revert; if (right != null) right.revert = !right.revert; } if (left != null) left.delta += delta; if (right != null) right.delta += delta; nodeValue += delta; subTreeValue += delta * size; delta = 0; }
public static void makeRoot(Node x) { expose(x); x.revert = !x.revert; }