Code: Alles auswählen
/* Algorithmen und Datenstrukturen Uebung 5 */
#include
<stdio.h>
#include
<stdlib.h>
// Globale Variablen und Typdefinitionen
typedef
struct node_
{
int key;
char *data;
struct node_ *left;
struct node_ *right;
} node;
typedef
struct biTree_ {
int size;
node *root;
} biTree;
// Funktionsprototypen
node *insertNode(node *,
int , char *);
node *insert(biTree *,
int, char *);
void
printTreeInline (node *);
void
printTreeLevelOrder (node *);
node *lookup (node *,
int);
int
treeDepth (node *);
// Funktionen
node *insert(biTree *t,
int key, char *data)
{
node *newNode;
newNode = insertNode(t->root,key,data);
if(t->root == NULL)
{
t->root = newNode;
}
if(newNode != NULL)
{
t->size++;
}
return newNode;
}
node *insertNode(node *start,
int key, char *data)
{
node *newNode = NULL;
if(start == NULL)
{
//Es gibt noch kein Wurzelelement;(root)
newNode = (node *)malloc(
sizeof(node));
if(newNode != NULL)
{
newNode->data = data;
newNode->key = key;
newNode->right = newNode->left = NULL;
}
}
else
{
if(key < start->key)
{
printf(
"<\n");
newNode = insertNode(start->left,key,data);
if(start->left == NULL)
{
start->left = newNode;
}
}
elseif(key > start->key)
{
printf(
">\n");
newNode = insertNode(start->right,key,data);
if(start->right == NULL)
{
start->right = newNode;
}
}
else
{
printf(
"Key %i ist schon vorhanden\n",key);
}
}
return newNode;
}
void
printTreeInline (node *start)
{
if(start != NULL)
{
printTreeInline(start->left);
printf(
"Ausgabe Key %i \n",start->key);
printTreeInline(start->right);
}
}
// Hauptprogramm
int
main(void)
{
// Variablen fuer den Baum anlegen
int Personalnumber = 0;
char Name[25] = {0};
biTree firstTree = { 0, NULL };
node firstnode ={ 0,NULL,NULL,NULL};
// Einlesen mehrerer Datensaetze von der Tastur
printf(
"Please insert Personalnumber and Name : ");
scanf(
"%i %s", &Personalnumber, Name);
firstnode.key = Personalnumber;
firstnode.data = Name;
// und Einfügen in den Baum mittels insert()
insert(&firstTree,Personalnumber, Name );
// Ausgabe des Baumes in Inline-Notation
printTreeInline (firstnode);
// getchar();
return 0;
}