You are on page 1of 2

#include <stdio.

h>
#include <stdlib.h>
#include <string.h>

typedef struct _arrayNode


{
int nbrCounter;
struct _treeNode* myRoot;
}_ARRAYNODE;

typedef struct _treeNode


{
int number;
int numberCounter;
struct _treeNode* Left;
struct _treeNode* Right;
}_TREENODE;

struct _treeNode* CreateNode(int);


struct _treeNode* Insert(struct _treeNode*,int,int*);
void PrintTree(struct _treeNode*);

int main()
{
struct _arrayNode* A;
int i,j;
int ponavljanje=0;
int RandBr;
A=(struct _arrayNode*)malloc(20*sizeof(_ARRAYNODE));
for(i=0;i<20;i++)
{
(A+i)->myRoot=NULL;
(A+i)->nbrCounter=0;
for(j=0;j<100;j++)
{
RandBr=rand()%(200-100)+100;
(A+i)->myRoot=Insert((A+i)->myRoot,RandBr,&ponavljanje);
if(ponavljanje==0)
(A+i)->nbrCounter++;

}
}
for(i=0;i<20;i++)
{
printf("Stablo %d(Unijeli smo %d razlicitih brojeva)\r\n",i+1,(A+i)->nbrCounter);
PrintTree((A+i)->myRoot);

return 0;
}

void PrintTree(struct _treeNode* S)


{
if(S!=NULL)
{
PrintTree(S->Left);
if(S->numberCounter>1)
printf("%d(%d puta)\r\n",S->number,S->numberCounter);
PrintTree(S->Right);
}
}

struct _treeNode* CreateNode(int N)


{
struct _treeNode* P=NULL;
P=(struct _treeNode*)malloc(N*sizeof(_TREENODE));
if(P==NULL)
{
printf("Memory allocation failed!");
return NULL;
}
P->Left=NULL;
P->Right=NULL;
P->numberCounter=0;

return P;
}

struct _treeNode* Insert(struct _treeNode* S,int broj,int* ponavljanje)


{
if(S==NULL)
{
S=CreateNode(1);
S->number=broj;
S->numberCounter++;
*ponavljanje=0;
}
else if(S->number>broj)
S->Left=Insert(S->Left,broj,ponavljanje);
else if(S->number<broj)
S->Right=Insert(S->Right,broj,ponavljanje);
else
{
S->numberCounter++;
*ponavljanje=1;
}
return S;
}

You might also like