First page Back Continue Last page Graphics
private int selectBalanceAction()
{
int diff = determineHeight(left) - determineHeight(right);
int subdiff;
if (diff < -1) // right subtree is too tall
if ((determineHeight(right.left) -
determineHeight(right.right)) < 0) // outer tall
return 2; // outer subtree already taller
else
return 4; // inner subtree is the problem
else if (diff > 1) // left subtree is too tall
if ((determineHeight(left.left) -
determineHeight(left.right)) > 0) // outer tall
return 1; // outer subtree already taller
else
return 3; // inner subtree is the problem
else
return 0; // no rebalance necessary
}