struct Knoten {
  long Schluessel, Info;
  struct Knoten *Left,*Right;
};
struct Knoten *Kopf, *Ende;
Loeschen( long schluessel )
{
  struct Knoten *Vater,*Light,*a,*b;

  Ende->Schluessel=schluessel;
  a=Kopf; b =Kopf->Right;
  while( schluessel != b->Schluessel ) {
    a=b;b=(v<b->Schluessel) ? b->Left : b->Right;
  }
  Vater=b;
  if( Vater->Right == Ende )
    b=b->Left;
  else if( Vater->Right->Left == Ende ) {
    b=b->Right; b->Left = Vater->Left;
  } else {
    Light=b->Right;
    while( Light->Left->Left )
      Light=Light->Left;
    b=Light->Left; Light->Left=b->Right;
    b->Left=Vater->Left;b->Right=Vater->Right;
  }
  free( Vater ); // Speicher zurückgeben
  if( schluessel < a->Schluessel )
    a->Left = b;
  else
    a->Right = b;
}
