Prof. Dr. R. Laue                                                                                                                                  SS00
                                Informatik II
                                Übungsblatt 5

 




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);

}