P = Node[Pivot].Left Q = Node[P].Right Node[P].Right = Pivot Node[Pivot].Left = Q Pivot = P Node[Pivot].BF = 0 Node[Node[Pivot].Right].BF = 0
X = Node[Pivot].Left Y = Node[X].Right Node[Pivot].Left = Node[Y].Right Node[X].Right = Node[Y].Left Node[Y].Left = X Node[Y].Right = Pivot Pivot = Y if Node[Pivot].BF = 0 then { Node[Node[Pivot].Left].BF = 0 Node[Node[Pivot].Right].BF = 0 } else if Node[Pivot].BF = 1 then { Node[Pivot].BF = 0 Node[Node[Pivot].Left.BF = 0 Node[Node[Pivot].Right.BF = -1 } else { Node[Pivot].BF = 0 Node[Node[Pivot].Left].BF = 1 Node [Node[Pivot].Pivot].BF = 0 }