AVL - Adelson-Velski Landis

To maintain balance in AVL

Four cases to consider:

LL Rotation

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



LR Rotation

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
}


Return to CIS 350 Index Page