This is what I got so far. Please tell me whats wrong?? I think it has to do with the pointers. I create the tree at the beginning but when I call the insert function, the root remains empty which means the tree is empty.Am I right??
Code:
#include <stdio.h>
#include <stdlib.h>
typedef int BinTreeElementType;
typedef struct BinTreeNode *BinTreePointer;
struct BinTreeNode {
BinTreeElementType Data;
BinTreePointer LChild, RChild;
};
typedef enum {
FALSE, TRUE
} boolean;
void CreateBST(BinTreePointer *Root);
boolean EmptyBST(BinTreePointer Root);
void BSTInsert(BinTreePointer *Root, BinTreeElementType Item);
void InorderTraversal(BinTreePointer Root);
void GenerateBST(BinTreePointer *Root, int n);
//main program
main()
{
int n;
BinTreePointer Root;
CreateBST(&Root);
printf("Give the number of letters: ");
n = GetInteger();
GenerateBST(&Root, n);
InorderTraversal(Root);
system("PAUSE");
}
void CreateBST(BinTreePointer *Root)
{
*Root = NULL;
}
boolean EmptyBST(BinTreePointer Root)
{
return (Root==NULL);
}
void BSTInsert(BinTreePointer *Root, BinTreeElementType Item)
{
BinTreePointer LocPtr, Parent;
boolean Found;
LocPtr = *Root;
Parent = NULL;
Found = FALSE;
while (!Found && LocPtr != NULL) {
Parent = LocPtr;
if (Item < LocPtr->Data)
LocPtr = LocPtr ->LChild;
else if (Item > LocPtr ->Data)
LocPtr = LocPtr ->RChild;
else
Found = TRUE;
}
if (Found)
printf("To %c EINAI HDH STO DDA\n", Item);
else {
LocPtr = (BinTreePointer)malloc(sizeof (struct BinTreeNode));
LocPtr ->Data = Item;
LocPtr ->LChild = NULL;
LocPtr ->RChild = NULL;
if (Parent == NULL)
*Root = LocPtr;
else if (Item < Parent ->Data)
Parent ->LChild = LocPtr;
else
Parent ->RChild = LocPtr;
}
}
void InorderTraversal(BinTreePointer Root)
{
if (Root!=NULL) {
InorderTraversal(Root->LChild);
printf("%d ",Root->Data);
InorderTraversal(Root->RChild);
}
}
void GenerateBST(BinTreePointer *Root, int n)
{
int i;
BinTreeElementType Item;
for(i = 0; i < n; i++)
{
Item = rand()% 26 + 'A';
BSTInsert(*Root,Item);
//printf("%c", Item);
}
}