Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- typedef struct BiFa {
- int ertek;
- struct BiFa *bal, *jobb;
- } BiFa;
- BiFa *beszur(BiFa *gyoker, int ertek) {
- if (gyoker == NULL) {
- BiFa *uj = (BiFa*) malloc(sizeof(BiFa));
- uj->ertek = ertek;
- uj->bal = uj->jobb = NULL;
- return uj;
- }
- if (ertek < gyoker->ertek) { /* balra szur */
- gyoker->bal = beszur(gyoker->bal, ertek);
- }
- else if (ertek > gyoker->ertek) { /* jobbra szur */
- gyoker->jobb = beszur(gyoker->jobb, ertek);
- }
- else {
- /* mar benne van */
- }
- return gyoker;
- }
- void kiir ( BiFa * a)
- {
- if(a == NULL) return;
- kiir(a->bal);
- printf("%d\n",a->ertek);
- kiir(a->jobb);
- }
- void torol ( BiFa * a)
- {
- if(a == NULL) return;
- torol(a->bal);
- torol(a->jobb);
- free(a);
- }
- int szamol (BiFa *a)
- {
- if(a == NULL)
- return 0;
- return szamol(a->bal ) + szamol(a->jobb) +1;
- }
- int osszeg (BiFa * a)
- {
- if (a== NULL) return 0;
- return osszeg(a->bal) + osszeg(a->jobb) + a->ertek;
- }
- BiFa * keres (BiFa * a, int ertek)
- {
- BiFa * mozgo = a;
- while (mozgo != NULL && abs(mozgo ->ertek) != abs(ertek))
- {
- if(abs(mozgo ->ertek) < abs(ertek)) mozgo = mozgo->jobb;
- else mozgo = mozgo->bal;
- }
- return mozgo;
- }
- void negal (BiFa * a)
- {
- if (a== NULL) return;
- negal(a->bal);
- negal(a->jobb);
- a->ertek = a->ertek * -1;
- }
- void tukroz (BiFa *a)
- {
- if (a == NULL) return;
- BiFa * seged = a->bal;
- a->bal = a->jobb;
- a->jobb = seged;
- tukroz(a->jobb);
- tukroz(a->bal);
- //printf("%d\n", a->ertek);
- }
- int main(void) {
- int minta[] = {15, 96, 34, 12, 14, 56, 21, 11, 10, 9, 78, 43, 0};
- BiFa *gyoker = NULL;
- for (int i = 0; minta[i] > 0; i++)
- gyoker = beszur(gyoker, minta[i]);
- kiir(gyoker);
- /* Ide tedd be a kipróbálandó függvények hívásait! */
- //torol(gyoker);
- BiFa * proba = keres(gyoker, 12);
- printf("\n%d\n\n",proba->ertek);
- negal(gyoker);
- kiir(gyoker);
- proba = keres(gyoker, -56);
- printf("\n\n%d\n\n",proba->ertek);
- tukroz(gyoker);
- kiir(gyoker);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement