/*--------------------------------------------------------------------------------------------
	2_binaris_keresofa.c

*/

#include <stdio.h>
#include <stdlib.h>

struct vetel{
	int arukod;			/*ez a kulcsmezo*/
	int eladottdb;
	struct vetel *bal;
	struct vetel *jobb;
};

struct vetel * gyoker, *aktualis;

/*--------------------------------------------------------------------------------------------
*/

struct vetel *beepit(struct vetel * hova, struct vetel *elem)
{
	if (hova==NULL)
	{
		hova = elem;
		hova->bal=hova->jobb=NULL;
		return hova;
	}
	else if (hova->arukod==elem->arukod)
		hova->eladottdb +=elem->eladottdb;
	else if (hova->arukod>elem->arukod)
		hova->bal=beepit(hova->bal, elem);
		/*lehetne:  if (hova->bal==NULL) hova->bal=beepit(hova->bal, elem);
					else beepit(hova->bal, elem);*/
	else /*if (hova->arukod<elem->arukod)*/
		hova->jobb=beepit(hova->jobb, elem);
	return hova;
}

/*--------------------------------------------------------------------------------------------
*/

void listaz(struct vetel * mit)
{
	if (mit==NULL){
		printf("listaz");
		return;
	}
	else{
		listaz(mit->bal);
		printf("ARUKOD : %d, eladott mennyiseg : %d\n",mit->arukod,mit->eladottdb);
		listaz(mit->jobb);
	}
}

/*--------------------------------------------------------------------------------------------
*/

struct vetel *keres(struct vetel *hol, int kod)
{
	if (hol == NULL)
		return NULL;
	else if (hol->arukod==kod)
		return hol;
	else if (hol->arukod>kod)
		return keres(hol->bal, kod);
	else /*if (hol->arukod<kod)*/
		return keres(hol->jobb,kod);
}

/*--------------------------------------------------------------------------------------------
*/


int main()
{
	int i,elemkodok[10] = {11,2,5,4,0,2,1,15,12,8};
	gyoker=NULL;
	clrscr();
	for (i=0;i<10 ;i++ )
	{
		aktualis=(struct vetel *) malloc(sizeof(struct vetel));
		aktualis->arukod=elemkodok[i];
		aktualis->eladottdb=i;
		printf("elemkoD %d\n",aktualis->arukod);
		gyoker=beepit(gyoker,aktualis);
		
	}
	listaz(gyoker);
	aktualis=keres(gyoker,12);
	printf("elemkoD %d\n",aktualis->arukod);
	printf("elemszam %d\n",aktualis->eladottdb);
	return 0;
}
