tree checkrots( t )
tree t;

{ float wbal;
  wbal = wt( t->left ) / (float)t->weight;
  if( wbal > 0.707011 )
      /*** left subtree too heavy: right rotation needed ***/
      if( wt( t->left->left ) / (float)wt( t->left ) > 0.414213 )
           t = rrot( t );
      else { t->left = lrot( t->left );  t = rrot( t ); }
  else if( wbal < 0.292893 )
      /*** right subtree too heavy: left rotation needed ***/
      if( wt( t->right->left ) / (float)wt( t->right ) < 0.585786 )
           t = lrot( t );
      else { t->right = rrot( t->right );  t = lrot( t ); }
  return( t );
}
