|
TREES
/*Binary agac yaratma ve onu bir yonden diger yone tasima
preorder, inorder, ve postorder*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct agacNode {
struct agacNode *Sol;
int data;
struct agacNode *Sag;
};
typedef struct agacNode AGACNODE;
typedef AGACNODE AGACNODEPTR;
void Ekle(AGACNODEPTR *, int);
void SiraliSekil(AGACNODEPTR);
void GelisiGuzel(AGACNODEPTR);
void SiraPostala(AGACNODEPTR);
main()
{
int i, madde;
AGACNODEPTR kok = NULL;
srand(time(NULL));
/*agaca 0 ile 14 arasi siradan deger eklemeye calis*/
printf("Agaca yerlestirilen degerler :\n");
for(i = 1; i<=10; i++)
{
madde = rand() % 15;
printf("%3d", madde);
Ekle(&kok, madde);
}
/*Gelisi Guzel bir yonden diger yone tasima / kaydirma*/
printf("\n\nGelisi Guzel deger yonlendirme/ siralama :\n");
GelisiGuzel(kok);
/*Duzenli bir sekilde degerleri siralama*/
printf("\n\nDuzenli sekilde ki siralama:\n");
SiraliSekil(kok);
/*Esli bir sekilde degerleri siralama ve baglama*/
printf("\n\nDegerler Eslenmis durumda:\n");
SiraPostala(kok);
return(0);
}
void Ekle(AGACNODEPTR *Agac, int deger)
{
if(*Agac = = NULL)
{
*Agac = malloc(sizeof(AGACNODE));
if(*Agac != NULL)
{
(*Agac)->data = deger;
(*Agac)->Sol = NULL;
(*Agac)->Sag = NULL:
}
else
printf("%d eklenmedi.Yetersiz
Hafiza.\n", deger);
}
else
if(deger < (*Agac)->data)
Ekle(&(*Agac)->Sol),
deger);
else
if(value > (*Agac)->Sag),
deger);
else
printf("oley");
}
void SiraliSekil(AGACNODEPTR Agac)
{
if(Agac != NULL)
{
SiraliSekil(Agac->Sol);
printf("%3d", Agac->data);
SiraliSekil(Agac->Sag);
}
}
void GelisiGuzel(AGACNODEPTR Agac)
{
if(Agac != NULL)
{
printf("%3d", Agac->data);
GelisiGuzel(Agac->Sol);
GelisiGuzel(Agac->Sag);
}
}
void SiraPostala(AGACNODEPTR Agac)
{
if(Agac != NULL)
{
SiraPostala(Agac->Sol);
SiraPostala(Agac->Sag);
printf("%3d", Agac->data);
}
}
|