Lösung Aufgabe 9 (10 Programmierpunkte - Abgabe per email)
#include <stdio.h>
struct knoten {
struct knoten *links;
struct knoten *rechts;
int wert;
};struct knoten *new_knoten(int wert)
{
struct knoten *hilf;
hilf = (struct knoten *) calloc(1,sizeof(struct knoten));
if (hilf == NULL)
return hilf;
hilf -> links = NULL;
hilf -> rechts = NULL;
hilf -> wert = wert;
return hilf;
}insert_baum_000000(struct knoten **wurzel, int wert)
{
if (*wurzel == NULL)
/* der baum ist noch leer */
{
*wurzel = new_knoten(wert);
if (*wurzel == NULL)
return 1;
return 0;
}
/* ist noch einzufuegen */if ((*wurzel) ->wert == wert) return 2; // schon da;
if ((*wurzel) ->wert > wert) return insert_baum_000000(& ((*wurzel) ->links), wert);
if ((*wurzel) ->wert < wert) return insert_baum_000000(& ((*wurzel) ->rechts), wert);
}print_baum_000000(struct knoten *wurzel)
{
if (wurzel != NULL)
{
print_baum_000000(wurzel->links);
printf(" %d \n",wurzel->wert);
print_baum_000000(wurzel->rechts);
}
}free_baum_000000(struct knoten *wurzel)
{
if (wurzel != NULL)
{
free_baum_000000(wurzel->links);
free_baum_000000(wurzel->rechts);
free(wurzel);
}
}
main()
{
struct knoten *wurzel = NULL;
int i;/*
if (insert_baum_000000(&wurzel,12))
printf("irgendwas ist schief gelaufen\n");
else
print_baum_000000(wurzel);
*/
for (i=0;i<1000;i++)
insert_baum_000000(&wurzel,rand()%1000);
print_baum_000000(wurzel);
free_baum_000000(wurzel);}