rot_rechts(struct knoten **wurzel)
        {
        struct knoten * hilf;

        if (*wurzel == NULL) return 0;
        hilf = *wurzel;
        *wurzel = (*wurzel)->links;
        hilf->links = (*wurzel)->rechts;
        (*wurzel)->rechts = hilf;
        return 0;
        }

rot_links(struct knoten **wurzel)
        {
        struct knoten * hilf;

        if (*wurzel == NULL) return 0;
        hilf = *wurzel;
        *wurzel = (*wurzel)->rechts;
        hilf->rechts = (*wurzel)->links;
        (*wurzel)->links = hilf;
        return 0;
        }


doppel_rot_linksrechts(struct knoten **wurzel)
        {
        struct knoten * hilf;
        if (*wurzel == NULL) return 0;
	if ( (*wurzel)->links == NULL) return 0;
/*
        rot_links( & ((*wurzel)->links));
        return rot_rechts(wurzel);
*/
	hilf = (*wurzel)->links->rechts;
	(*wurzel)->links->rechts = hilf->links;
	hilf->links = (*wurzel)->links;
	(*wurzel)->links = hilf->rechts;
	hilf->rechts = (*wurzel);
	*wurzel = hilf;
	return 0;
        }

doppel_rot_rechtslinks(struct knoten **wurzel)
        {
        struct knoten * hilf;
        if (*wurzel == NULL) return 0;
	if ( (*wurzel)->rechts == NULL) return 0;
/*
        rot_rechts( & ((*wurzel)->rechts));
        return rot_links(wurzel);
*/
	hilf = (*wurzel)->rechts->links;
	(*wurzel)->rechts->links = hilf->rechts;
	hilf->rechts = (*wurzel)->rechts;
	(*wurzel)->rechts = hilf->links;
	hilf->links = (*wurzel);
	*wurzel = hilf;
	return 0;
        }